Заявление: Данная статья является оригинальной для автора, и репринтер должен указать это.
Автор: Цзэн Цзинь (qq:310575)
В последнее время я был занят тестированием производительности программного обеспечения BI компании. Сейчас я в основном проверяю параллелизм и стабильность PA, когда CUBE использует ROLAP.
С использованием таблиц и измерений, куб: таблица фактов sales_fact_1997, таблица измерений time_by_day, куб: продажи;
Содержание изменения: удалите исходное измерение ВРЕМЯ, создайте новое измерение ВРЕМЯ и измените куб ПРОДАЖИ.
Вставка данных:
1. Вставка данных факта: скопируйте данные sales_fact_1997 через DTS и планирование. Частота — 10 000 сообщений в минуту.
Наиболее часто используемые операторы SQL: выберите 10 000 * из sales_fact_1997.
2. Вставка данных измерения. Вставьте данные в time_by_day с помощью операторов SQL.
Операторы SQL, использованные в тесте:
1. Одиночная вставка
INSERT INTO time_by_day
(time_id, the_date, the_year,month_of_year, квартал,день_месяца)
ЗНАЧЕНИЯ ('1101', '1999-10-1', '1999', '10', 'Q4','1')
2. Одиночная вставка:
INSERT INTO time_by_day
(time_id, the_date, the_year, Month_of_year, квартал, день_месяца)
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(the_date + 1)
} AS квартал, DAY(the_date + 1) AS день_месяца
FROM time_by_day
ORDER BY time_id DESC
3. Вставка петли:
DECLARE @MyCounter INT
SET @MyCounter = 0 /*Установить переменные*/
WHILE (@MyCounter < 2) /*Установить количество циклов*/
BEGIN
WAITFOR DELAY '000:00:10' /*Время задержки 10 секунд*/
INSERT INTO time_by_day
(time_id, the_date, the_year, Month_of_year, квартал, день_месяца)
SELECT TOP 1 time_id + 1 КАК time_id, the_date + 1 КАК the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) КАК месяц_года, { fn КВАРТАЛ( the_date + 1)
} КАК квартал, ДЕНЬ(the_date + 1) КАК день_месяца
ОТ time_by_day
ORDER BY time_id DESC
SET @MyCounter = @MyCounter + 1
КОНЕЦ
4. Вставьте данные со временем как переменную.
DECLARE @MyCounter INT
объявить @the_date datetime
SET @MyCounter = 0
SET @the_date = '1999-1-4'
WHILE (@MyCounter < 200000)
НАЧАТЬ
ОЖИДАНИЕ ЗАДЕРЖКИ '000:00:10'
/*INSERT INTO time_by_day
(time_id, the_date) , the_year, месяц_года, квартал, день_месяца)
SELECT TOP 1 time_id + 1 КАК time_id, the_date + 1 КАК the_date, YEAR(the_date + 1)
AS the_year, MONTH(the_date + 1) ASmonth_of_year, { fn QUARTER(the_date + 1)
} AS квартал, ДЕНЬ(the_date + 1) AS день_месяца
FROM time_by_day
ORDER BY time_id DESC
*/
вставить в time_by_day (time_id,the_date)values('371',@the_date)
SET @the_date = @the_date + 1
SET @MyCounter = @ МойСчетчик + 1
КОНЕЦ