AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-8771

AmmarR's questions

Martin Hope
AmmarR
Asked: 2012-08-28 23:07:57 +0800 CST

Melhorar o desempenho de uma tabela de fatos

  • 2

Eu tenho uma tabela de fatos CardTransactionFact

Estrutura da Tabela

TABLE [dbo].[CardTransactionFact]
    [CardTransactionID] [int] IDENTITY(1,1) NOT NULL,
    [TransactionTerminalID] [int] NOT NULL,
    [SourceAccountTypeID] [int] NULL,
    [DestinationAccountTypeID] [int] NULL,
    [RimNo] [varchar](15) NULL,
    [CaptureCodeID] [int] NOT NULL,
    [RoutingCodeID] [int] NOT NULL,
    [ProcessingCodeID] [int] NOT NULL,
    [ActionCodeID] [int] NOT NULL,
    [NetworkCodeID] [int] NOT NULL,
    [ProductCodeID] [int] NOT NULL,
    [AcquiringCountryCodeID] [int] NOT NULL,
    [IssuingCountryCodeID] [int] NOT NULL,
    [TransactionCurrencyCodeID] [int] NOT NULL,
    [AmountBD] [decimal](18, 3) NOT NULL,
    [LocalCurrencyCodeID] [int] NOT NULL,
    [CardIssuerBank] [int] NOT NULL,
    [CardTypeID] [int] NOT NULL,
    [SuspectTransactionFlag] [char](1) NOT NULL,
    [ReversalTransactionFlag] [char](1) NOT NULL,
    [LocalTransactionDateKey] [int] NOT NULL,
    [LocalTransactionHourKey] [int] NOT NULL,
    [BBKRole] [char](1) NOT NULL,
    [AmountRangeKey] [int] NULL,
    [CustomerKey] [int] NULL

Tamanho: 11 GB Número de linhas: 56.959.828


Tornou-se muito difícil acessar esta tabela agora, um simples Select count(*) from CardTransactionFactleva horas para ser executado.

a maioria das colunas na tabela são apenas números inteiros, é por isso que não fiz nenhuma indexação.

O que você acha que devo fazer para melhorar esta tabela e aumentar a velocidade das consultas a esta tabela

  1. Se estiver indexando quais colunas devo indexar e por quê
  2. É uma boa ideia particionar a tabela
  3. Qualquer outra sugestão
sql-server-2008 index
  • 3 respostas
  • 2506 Views
Martin Hope
AmmarR
Asked: 2012-06-29 04:09:29 +0800 CST

Definir dinamicamente um intervalo em uma dimensão

  • 18

Tenho um problema que enfrento toda vez que decido construir um cubo e ainda não encontrei uma maneira de superá-lo.

A questão é como permitir que o usuário defina uma gama de coisas automaticamente sem ter a necessidade de codificá-las na dimensão. Vou explicar meu problema em um exemplo.

Tenho uma tabela chamada Clientes :

Estrutura da Tabela

esses são os dados da tabela:

Tabela com dados

Desejo exibir os dados em um estilo dinâmico e agrupar o Salário e a Idade em intervalos definidos, como abaixo:

Tabela com Dados com Intervalo Definido

Eu escrevi este script e defini os intervalos:

SELECT [CustId]
      ,[CustName]
      ,[Age]
      ,[Salary]
      ,[SalaryRange] = case
        when cast(salary as float) <= 500 then
            '0 - 500'
        when cast(salary as float) between 501 and 1000 then
            '501 - 1000'
        when cast(salary as float) between 1001 and 2000 then
            '1001 - 2000'
        when cast(salary as float) > 2000 then
            '2001+'
        end,
        [AgeRange] = case
        when cast(age as float) < 15 then
            'below 15'
        when cast(age as float) between 15 and 19 then
            '15 - 19'
        when cast(age as float) between 20 and 29 then
            '20 - 29'               
        when cast(age as float) between 30 and 39 then
            '30 - 39'
        when cast(age as float) >= 40 then
            '40+'
        end
  FROM [Customers]
GO

Meus intervalos são codificados e definidos. Quando copio os dados para o Excel e os visualizo em uma tabela dinâmica, aparece como abaixo:

Dados na tabela dinâmica

Meu problema é que quero criar um cubo convertendo a tabela Customers em uma tabela de fatos e criar tabelas de 2 dimensões SalaryDim & AgeDim .

A tabela SalaryDim tem 2 colunas ( SalaryKey,SalaryRange ) e a tabela AgeDim é semelhante ( ageKey,AgeRange ). Minha tabela de fatos do cliente tem:

Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim

Ainda tenho que definir meus intervalos dentro dessas dimensões. Sempre que conecto um pivô do Excel ao meu cubo, só consigo ver esses intervalos definidos codificados.

Minha pergunta é como definir intervalos dinamicamente da tabela dinâmica diretamente, sem criar as dimensões do intervalo como AgeDim e SalaryDim . Não quero ficar preso apenas aos intervalos definidos na dimensão.

Sem intervalo definido

O intervalo definido é '0-25' , '26-30' , '31-50'. Talvez eu queira alterá-lo para '0-20', '21-31' , '32-42' e assim por diante, e os usuários solicitam intervalos diferentes sempre.

Toda vez que eu mudo, tenho que mudar a dimensão. Como posso melhorar esse processo?

Seria ótimo ter uma solução implementada no cubo, para que qualquer ferramenta cliente de BI que se conectasse ao cubo pudesse definir os intervalos, mas não me importaria se houvesse uma boa maneira de usar apenas o Excel.

sql-server sql-server-2008
  • 3 respostas
  • 10630 Views
Martin Hope
AmmarR
Asked: 2012-06-27 03:58:59 +0800 CST

Um Script para inserir Dados fictícios em todas as tabelas do Banco de Dados

  • 4

Eu queria um script que pudesse percorrer todas as tabelas e suas colunas no banco de dados e inserir dados fictícios com base no tipo e tamanho da coluna, para que eu pudesse começar a usar o banco de dados para testes e capacidade de executar consultas e aplicativos de teste.

sql-server t-sql
  • 2 respostas
  • 21466 Views
Martin Hope
AmmarR
Asked: 2012-06-20 21:14:10 +0800 CST

Adicione uma nova Coluna e defina sua posição em uma tabela

  • 7

Eu tenho a Tabela A com 5 colunas:

TableA
--
Name
Tel
Email
Address

Quero adicionar uma nova coluna (móvel) entre Tel e Email:

TableA
--
Name
Tel
Mobile
Email
Address

Se eu usar

ALTER TABLE TableA
ADD COLUMN Mobile INT NOT NULL

a coluna móvel é adicionada ao final da tabela.

Existe uma maneira de conseguir isso sem descartar a tabela e mover os dados para uma nova tabela?

sql-server-2008 database-design
  • 2 respostas
  • 47436 Views
Martin Hope
AmmarR
Asked: 2012-06-08 00:52:17 +0800 CST

Crie uma função no servidor sql sem especificar return_data_type

  • 2

Estou tentando criar uma função com valor escalar no SQL server, sem especificar o return_data_type

eu quero poder retornar qualquer tipo de dados com base em um parâmetro enviado pelo chamador da função

por exemplo

CREATE FUNCTION GenerateRandomData 
(
    @Datatype varchar(20)
)
RETURNS <Return any datatype specified by @Datatype parameter>
AS
BEGIN
    -- Declare the return variable here
    IF @Datatype in ('varchar','char','nchar','nvarchar','text','ntext')
        Begin
            RETURN 'String'
        end
    Else
    IF @Datatype in ('int','bigint','smallint')
        Begin
            RETURN 100
        end
    Else
    IF @Datatype in ('datetime','smalldatetime')
    Begin
        RETURN getdate()
    end     

END
sql-server-2008 datatypes
  • 1 respostas
  • 268 Views
Martin Hope
AmmarR
Asked: 2012-06-06 22:38:44 +0800 CST

Como sincronizar uma tabela entre oracle e sybase

  • 1

Tenho uma tabela no Sybase (destino) que gostaria de manter sincronizada com uma tabela no Oracle (origem)

Não posso truncar e preencher a tabela no Sybase porque ela é usada por um aplicativo, só posso adicionar novos registros e atualizar alterações, as alterações acontecem apenas em uma coluna.

Em meu ambiente tenho desenvolvimento Sybase, Oracle, SQL Server & .net

Qual é a maneira melhor, mais simples e confiável de realizar essa tarefa? Devo desenvolver um DTS, um aplicativo .net, usar um servidor vinculado do SQL Server ou existe uma maneira melhor?

sql-server oracle
  • 1 respostas
  • 1294 Views
Martin Hope
AmmarR
Asked: 2012-05-31 23:30:15 +0800 CST

Não é possível fazer alterações em um trabalho no SQL 2000

  • 2

Tenho um job em meu servidor SQL 2000, este job é utilizado para executar um DTS, desejo alterar o agendamento deste job.

mas toda vez que tento alterar ou excluir ou interromper este trabalho, recebo a mensagem de erro

ERROR 14274: Cannot add, update, or delete a job (or its steps or schedules) that originated from an MSX server. The job was not saved.

Eu tenho um desligamento do sistema chegando no fim de semana e não posso parar este trabalho...

sql-server-2000 jobs
  • 1 respostas
  • 1309 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve