Функции счетчика Qlik Sense с синтаксисом
Функции счетчика Qlik Sense применяются к записям, когда те встречаются во время выполнения сценария загрузки оператора LOAD.
Функции счетчика Qlik Sense с синтаксисом
Ниже представлены некоторые из функций счетчика в Qlik Sense.
i. autonumber() in Qlik Sense
Функция autonumber() присваивает целочисленное значение каждой уникальной записи, обнаруженной во время выполнения скрипта. Это делается для хранения больших записей данных в компактных составных ключах, где целочисленные значения присваиваются отдельным значениям записи в соответствии с выражением, указанным в функции автонумерации.
Синтаксис функции aurtonumber Qlik Sense –
autonumber(expression[ , AutoID])
где expression – это имена записей, которые вы хотите сделать составными ключами для использования автонумерации.
По сути, AutoID – это необязательный параметр или идентификатор, который вы можете назначить отдельным счетчикам автонумерации, если вы создаете более одного в одном скрипте.
Например, мы создали составной ключ для записей комбинации полей «Регион», «Год» и «Месяц».
RegionSales в Qlik Sense autonumber:
LOAD *, AutoNumber(Region&Year&Month) as RYMkey; LOAD * INLINE [ Region, Year, Month, Sales North, 2017, May, 245 North, 2017, May, 347 North, 2017, June, 127 South, 2017, June, 645 South, 2018, May, 367 South, 2018, May, 221 ];
Таким образом, этот составной ключ будет назначать целые числа записей таблицы, которую мы загрузили в строку.
Регион |
Год |
Месяц |
Продажи |
RYMkey |
North |
2017 |
May |
245 |
1 |
North |
2017 |
May |
374 |
1 |
North |
2017 |
June |
127 |
2 |
South |
2017 |
June |
645 |
3 |
South |
2018 |
May |
367 |
4 |
South |
2018 |
May |
221 |
4 |
Как видно из таблицы, для каждой новой комбинации региона, года и месяца существует уникальный RYMkey. Такие RYMkeys представляют собой составные ключи, созданные с помощью функции autonumber(). Итак, мы используем эти ключи далее в скрипте, когда в вычислениях используются значения, соответствующие ключам. Например, используя значения RYMkey, значения продаж, соответствующие каждой комбинации RYM, могут использоваться в некоторых вычислениях, таких как сумма, среднее и т. д.
ii. autonumberhash128() в Qlik Sense
Autonumberhash128 () – это вариант функции autonumber(), которую мы изучили ранее. Autonumber создает целочисленное значение в качестве составного ключа и присваивает его комбинации значений, а autonumberhash128() сначала создает 128-битное хеш-значение для комбинации, а затем назначает целое число, соответствующее каждому хеш-значению. Мы создаем такие значения для хранения больших и сложных ключей в меньшем объеме памяти и в более простых формах.
Синтаксис функции счетчика Qlik Sense autonumebrhash128
autonumberhash128(expression {, expression})
Обратите внимание, что мы можем создавать хеш-значения только в том случае, если мы используем их в том же скрипте загрузки данных. Если вы хотите использовать составные ключи, созданные с помощью autonumberhash128(), в каком-либо другом скрипте загрузки, вы должны использовать такие функции, как hash128, hash160 и hash256.
В любом случае, чтобы лучше понять эту функцию, мы загружаем образец данных в строку, а затем создаем составной ключ хеш-значения с помощью функции autonumberhash128(). В этом примере мы создали составной ключ под названием RYMkey, который будет назначать уникальные 128-битные хеш-значения для комбинаций региона, года и месяца.
RegionSales в autonumberhash128
LOAD *, AutoNumberHash128(Region, Year, Month) as RYMkey; LOAD * INLINE [ Region, Year, Month, Sales North, 2017, May, 245 North, 2017, May, 347 North, 2017, June, 127 South, 2017, June, 645 South, 2018, May, 367 South, 2018, May, 221 ];
Это приведет к составным ключам, соответствующим уникальным комбинациям региона, года и месяца.
Регион |
Год |
Месяц |
Продажи |
RYMkey |
North |
2017 |
May |
245 |
1 |
North |
2017 |
May |
374 |
1 |
North |
2017 |
June |
127 |
2 |
South |
2017 |
June |
645 |
3 |
South |
2018 |
May |
367 |
4 |
South |
2018 |
May |
221 |
4 |
Теперь, используя эти значения RYMkey, например, используйте 2, когда хотите использовать комбинацию North, 2017, June. В приведенном ниже коде мы использовали созданный составной ключ для загрузки нового поля «Стоимости»
RegionCosts:
LOAD Costs, AutoNumberHash128(Region, Year, Month) as RYMkey; LOAD * INLINE [ Region, Year, Month, Costs South, 2018, May, 167 North, 2017, May, 56 North, 2017, June, 199 South, 2017, June, 64 South, 2018, May, 172 South, 2018, May, 126 ];
Теперь поля продаж и затрат автоматически связываются в зависимости от комбинации RYM, которую они используют. Например, обратите внимание на таблицу ниже, в которой показана сумма затрат и продаж для каждой уникальной комбинации RYM.
Регион |
Год |
Месяц |
Sum([Sales]) |
Sum([Costs]) |
Totals |
1952 |
784 |
||
North |
2017 |
June |
127 |
199 |
North |
2017 |
May |
592 |
56 |
South |
2018 |
June |
645 |
64 |
South |
2018 |
May |
588 |
465 |
iii. autonumberhash256()
Функция autonumberhash256() создает 256-битное значение для уникальных составных ключей, созданных для различных комбинаций записей данных или значений. Например, Европа, 2017 год, январь может быть одной комбинацией записей данных, для которой сначала будет создано 256-битное хеш-значение, а затем ему будет присвоено целое число. Как и все другие функции автонумерации, мы также используем эту функцию для управления пространством системы, обрабатывая сложные ключи путем создания таких составных ключей. Это также предотвращает образование синтетического ключа.
Синтаксис для autonumberhash256
autonumberhash256(expression {, expression})
Expressions – это поля из записи данных, для которых вы хотите создать 256-битный хэш.
Например, если мы используем тот же набор данных, который мы использовали при объяснении функции autonumberhash128(), тогда код будет выглядеть так:
RegionSales в функциях счетчика Qlik Sense autonumberhash256
LOAD *, AutoNumberHash256(Region, Year, Month) as RYMkey; LOAD * INLINE [ Region, Year, Month, Sales North, 2017, May, 245 North, 2017, May, 347 North, 2017, June, 127 South, 2017, June, 645 South, 2018, May, 367 South, 2018, May, 221 ];
Создаст 256-битные хеш-значения и целочисленные значения, соответствующие комбинациям региона, месяца и года, с которыми функция сталкивается при выполнении скрипта. например,
- RYMkey 1 для North, 2017, May
- RYMkey 2 для North, 2017, June
- RYMkey 3 для South, 2017, June
- RYMkey 4 для South, 2018, May
Кроме того, в системе будут храниться уникальные 256-битные хеш-значения для номеров ключей 1,2,3 и 4.
iv. InterNo() в Qlik Sense
Функция InterNo() используется для отметки или нумерации итераций или количества раз, когда выражение выполняется в цикле. Например, первое выполнение будет помечено как 1, второе – 2 и так далее, пока цикл не будет завершен.
Синтаксис функции InterNo:
InterNo()
Давайте разберемся с этим на следующем примере. Предположим, у нас есть код, показанный ниже.
LOAD IterNo() as Day, Date( StartDate + IterNo() - 1 ) as Date While StartDate + IterNo() - 1 <= EndDate; LOAD * INLINE [StartDate, EndDate 22-01-2018, 26-01-2018 ];
Этот код будет генерировать итерации каждый раз, когда выполняется цикл, начиная с даты начала и заканчивая датой окончания, как указано в инструкции Load Inline. Повторения будут пронумерованы в поле День. Рекомендуется использовать функцию InterNo() с предложением While, так как она лучше всего работает в циклах.
В результате представленный выше код сгенерирует таблицу.
День |
Дата |
1 |
22-01-2018 |
2 |
23-01-2018 |
3 |
24-01-2018 |
4 |
25-01-2018 |
5 |
26-01-2018 |
Это показывает, что функция InterNo() создавала числа для каждого раза, когда цикл while выполнялся посредством оператора LOAD, и сохраняла их как значения поля Day. Вы можете использовать эту функцию для больших значений данных, так как она автоматически создает число с помощью цикла, экономя время на выполнение этой операции вручную.
v. RecNo() в Qlik Sense
Функция RecNo() возвращает количество записей в соответствии с порядком каждой записи в сценарии LOAD. Например, первая запись, которая читается во время выполнения скрипта, будет иметь номер 1, следующая – 2 и так далее
Синтаксис функции счетчика Qlik Sense RecNo:
RecNo()
Например, мы загружаем некоторые данные прямо через скрипт загрузки данных. Мы будем называть это – загрузкой таблицы необработанных данных.
Table1:
LOAD * INLINE [A, B 1,cc 2,dd 3,ee];
Table2:
LOAD * INLINE [C, D 4, xx 5,yy 6,zz];
Теперь, используя RecNo(), мы загрузим номера записей в обе таблицы, загруженные выше.
QTab:
LOAD *, RecNo( ), resident Table1 where A<>2; LOAD C as A, D as B, RecNo( ), resident Table2 where A<>4;
//Исходные таблицы нам больше не нужны, поэтому мы их отбрасываем
Drop tables Table1, Table2;
Здесь нам не нужны записи с номерами 2 и 4 из каждой таблицы. Итак, итоговая таблица будет выглядеть так:
A |
B |
RecNo() |
1 |
cc |
1 |
3 |
ee |
3 |
5 |
yy |
2 |
6 |
Zz |
3 |
Если вы обратите внимание, то увидите номера записей в соответствии с порядком загрузки в необработанном скрипте, а не в том виде, в котором они отображаются в таблице.
vi. RowNo()
Функция RowNo() возвращает нумерацию строк во внутренней таблице Qlik Sense, созданную путем загрузки данных в скрипт загрузки данных. Это отличается от функции RecNo(), поскольку она возвращает нумерацию строк, когда таблица все еще находится в сценарии загрузки в необработанном виде, а не в результирующей таблице.
Синтаксис функции счетчика Qlik Sense RowNo:
RowNo([TOTAL])
Давайте возьмем тот же пример, который мы рассматривали в объяснении функции RecNo().
Table1:
LOAD * INLINE [A, B 1,cc 2,dd 3,ee];
Table2:
LOAD * INLINE [C, D 4, xx 5,yy 6,zz];
А теперь создадим внутреннюю таблицу, в которой нумеруем строки с помощью RowNo().
QTab:
LOAD *, RowNo( ), resident Table1 where A<>2; LOAD C as A, D as B, RowNo( ), resident Table2 where A<>4;
//Исходные таблицы нам больше не нужны, поэтому мы их отбрасываем
Drop tables Table1, Table2;
Созданная таблица выглядит так:
A |
B |
RowNo() |
1 |
cc |
1 |
3 |
ee |
2 |
5 |
yy |
3 |
6 |
Zz |
4 |