В данной статье описан подход, как сгенерировать случайные данные в соответствии с текущими данными. Представьте, что у Вас есть справочники с ID. Таблица фактов будет содержать всевозможные пересечения указанных ID и случайное число.
Код для генерации данных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
table1: LOAD * Inline [ ID1, Name1 101, Name101 102, Name102 103, Name103 ]; table2: LOAD * Inline [ ID2, Name2 201, Name201 202, Name202 ]; table3: LOAD * Inline [ ID3, Name3 301, Name301 302, Name302 303, Name303 304, Name304 305, Name305 ]; GenerateFact: LOAD ID1 Resident table1; JOIN (GenerateFact) LOAD ID2 Resident table2; JOIN (GenerateFact) LOAD ID3 Resident table3; NoConcatenate Fact: LOAD ID1, ID2, ID3, Rand() as Value Resident GenerateFact; DROP Table GenerateFact; |
Результирующая таблица фактов:
Как изменить распределение случайных данных?
Для этого можно создать какую-нибудь формулу с применением rand() функции, например:
1 |
(Rand()*Rand() + Rand() + Rand()*1000)*10 + 500*rand() as Value |
Пример сложного распределения данных в QlikView
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
table1: LOAD * Inline [ ID1, Name1 101, Name101 102, Name102 103, Name103 ]; table2: LOAD * Inline [ ID2, Name2 201, Name201 202, Name202 ]; table3: LOAD * Inline [ ID3, Name3 301, Name301 302, Name302 303, Name303 304, Name304 305, Name305 ]; table4: LOAD * Inline [ DateFact 01.06.2016 02.06.2016 03.06.2016 04.06.2016 05.06.2016 06.06.2016 07.06.2016 08.06.2016 09.06.2016 10.06.2016 11.06.2016 12.06.2016 13.06.2016 14.06.2016 15.06.2016 16.06.2016 17.06.2016 18.06.2016 19.06.2016 20.06.2016 21.06.2016 22.06.2016 23.06.2016 24.06.2016 25.06.2016 26.06.2016 27.06.2016 28.06.2016 29.06.2016 30.06.2016 ]; GenerateFact: LOAD ID1 Resident table1; JOIN (GenerateFact) LOAD ID2 Resident table2; JOIN (GenerateFact) LOAD ID3 Resident table3; JOIN (GenerateFact) LOAD DateFact Resident table4; NoConcatenate Fact: LOAD ID1, ID2, ID3, DateFact, Rand()*(Rand() + Rand()*Rand())*(4000-4000*Rand()) + Rand()*100 - Rand()*50 as Value Resident GenerateFact; DROP Table GenerateFact; |
Результат распределения случайных данных:
Ключевые слова: Генератор случайных данных для QlikView, Генератор случайных чисел QlikView, Получить случайные данные для QlikView
И напоследок — генерация таблицы со временем:
1 2 3 |
Time: LOAD MakeTime(9 + RowNo(),Round(Rand()*60),Round(Rand()*60)) as time AutoGenerate 10; |
Leave a Reply