Declaração: Este artigo é original do autor, devendo o reimpressor indicá-lo.
Autor: Zeng Jin (qq:310575)
Recentemente, estive ocupado testando o desempenho do software de BI da empresa. Atualmente, testo principalmente a simultaneidade e a estabilidade do PA quando o CUBE usa ROLAP.
Envolvendo tabelas e dimensões, cubo: tabela de fatos sales_fact_1997, tabela de dimensões time_by_day cubo: vendas;
Conteúdo de modificação: exclua a dimensão TIME original, crie uma nova dimensão TIME e modifique o cubo SALES.
Inserção de dados:
1. Inserção de dados de fato: copie os dados de sales_fact_1997 através de DTS e agendamento. A frequência é de 10.000 mensagens por minuto.
Instruções SQL usadas principalmente: selecione os 10.000 principais * de sales_fact_1997
2. Inserção de dados de dimensão: Insira dados em time_by_day por meio de instruções SQL.
Instruções SQL usadas no teste:
1. Inserção única
INSERT INTO time_by_day
(time_id, the_date, the_year, mês_do_ano, trimestre, dia_do_mês)
VALORES ('1101', '1999-10-1', '1999', '10', 'Q4','1')
2. Inserção única:
INSERT INTO time_by_day
(time_id, the_date, the_year,month_of_year, quarter, day_of_month)
SELECT TOP 1 time_id + 1 AS time_id, the_date + 1 AS the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) ASmonth_of_year, { fn QUARTER(a_data + 1)
} AS trimestre, DAY(a_data + 1) AS dia_do_mês
FROM hora_por_dia
ORDER BY time_id DESC
3. Inserção de loop:
DECLARE @MyCounter INT
SET @MyCounter = 0 /*Definir variáveis*/
WHILE (@MyCounter < 2) /*Definir o número de loops*/
BEGIN
WAITFOR DELAY '000:00:10' /*Tempo de atraso 10 segundos*/
INSERT INTO time_by_day
(time_id, the_date, the_year, mês_do_ano, trimestre, dia_do_mês)
SELECT TOP 1 time_id + 1 AS time_id, the_date + 1 AS the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) AS mês_do_ano, { fn QUARTER(the_date + 1)
} AS trimestre, DAY(the_date + 1) AS day_of_month
FROM time_by_day
ORDER BY time_id DESC
SET @MeuContador = @MeuContador + 1
FIM
4. Insira dados com tempo como variável
DECLARE @MyCounter INT
declare @the_date datetime
SET @MyCounter = 0
SET @the_date = '1999-1-4'
WHILE (@MyCounter <200000)
BEGIN
WAITFOR DELAY '000:00:10'
/*INSERT INTO time_by_day
(time_id, the_date , o_ano, mês_do_ano, trimestre, dia_do_mês)
SELECT TOP 1 time_id + 1 AS time_id, the_date + 1 AS the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) AS mês_of_year, { fn QUARTER(the_date + 1)
} AS quarter, DAY(the_date + 1) AS day_of_month
FROM time_by_day
ORDER BY time_id DESC
*/
insert into time_by_day (time_id,the_date)values('371',@the_date)
SET @the_date = @the_date + 1
SET @MyCounter = @ MeuContador + 1
FIM