Size: a a a

2021 September 30

A

Anton in Qlik BI chat
Привет ! Подскажите пожалуйста, как оптимальнее будет работать с Array структурами данных из BigQiery в Клике ? Разворачивать построчно через Unnest () или есть ещё какие-то варианты ?
источник

VN

V N in Qlik BI chat
Тут есть об этом: https://community.qlik.com/t5/Qlik-Design-Blog/Preceding-Load/ba-p/1469534
Если в деталях, то:
- зависит от количества Preceiding Load - каждый этап имеет свою плату (для 1-го всегда быстрее), но эта плата за читаемость кода
- нельзя использовать * в From (не будет работать автоконкатенация)
- ... может вспомню что-то еще
источник

SP

Sergey Polekhin in Qlik BI chat
Всё просто. Резиденная загрузка - это всегда создание отдельного экземпляра таблицы. Использование же Preceding Load - это по сути форма записи, позволяющая в более удобной форме описать правила создания полей (упростить написание функций, о чём писал @stuchalkin.
Поэтому все Preceding Load- выполняется как единая операция и физически запись строки данных в таблицу в оперативную память выполняется по результатам выполнения  самого последнего Load
источник

SP

Sergey Polekhin in Qlik BI chat
Поэтому и RowNo() работает корректно только если описана в самом верхнем Load. И происходит это потому, что, как и написано в документации,  RowNo() возвращает номер строки, которая является результатом записи её в таблицу в оперативную память
источник

SP

Sergey Polekhin in Qlik BI chat
Использование же RowNo() в любых промежуточных Preceding Load будет приводить к возвращению значения 0 (ноль), т.к. при выполнении промежуточных Preceding Load не происходит записи формируемой строки  в итоговую таблицу
источник

SP

Sergey Polekhin in Qlik BI chat
Поэтому и ряд других функций может работать при резидентной загрузке не так, как при использовании Preceding Load
источник

SP

Sergey Polekhin in Qlik BI chat
Что же касается скорости чтения из QVD (optimized load) в сравнении с резидентной загрузкой, то на современных дисках (особенно SSD), эта операция может выполняться даже быстрее,  чем при резидентной загрузке. Различие связано с тем, как физическое формируется таблица в оперативной памяти при чтении из QVD и при резидентной загрузке.
Резидентная загрузка всегда выполняется построчно. Оптимизированная же загрузка из QVD выполняется закидыванием данных в оперативную память в виде потока Raw Data, т.е. без построчной обработки
источник

SP

Sergey Polekhin in Qlik BI chat
Чтение же данных из QVD в неоптимизированном режиме - сравнимо со скоростью выполнения обычной резидентной загрузки
источник

VN

V N in Qlik BI chat
Сергей да, но скорее это не мне надо было отвечать :)
источник

VN

V N in Qlik BI chat
Вопрос был в том что быстрее:
1. From qvd + Resident
2. From qvd > Preceiding
источник

SP

Sergey Polekhin in Qlik BI chat
Ну и последнее. Если памяти на сервере недостаточно, то чтение с обработкой из QVD позволит расходовать память на хранение только одного экземпляра таблицы. При резидентной обработке придется держать в памяти два экземпляра таблицы: исходную и формируемую.
источник

SP

Sergey Polekhin in Qlik BI chat
Не попал? 😁
источник

VN

V N in Qlik BI chat
Ну я думаю, что кто задавал вопрос разберется :)
источник

SP

Sergey Polekhin in Qlik BI chat
Так нельзя сравнивать. Preceding - это лишь форма записи.
источник

SP

Sergey Polekhin in Qlik BI chat
2 пункт всегда будет быстрее, поскольку формирует одну таблицу. А в первом - формируется две
источник

VN

V N in Qlik BI chat
Почему это всего лишь 2 способа получения одного и того же результата... Вопрос что быстрее будет работать...
источник

ZS

Zhenya Skrebanov in Qlik BI chat
Я однозначно могу сказать что load ... store into QVD, load * from QVD - работает быстро и быстрее резидента и естественно не жрет память. То есть принудительно все темп таблицы сохраняю в QVD, и дропаю их
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
не одного и того же. тот кто использует резидент там где можно юзать пресидинг, совершает преступление)))
источник

ЕС

Евгений Стучалкин... in Qlik BI chat
а я вот чет не подтвердил пока))
источник

ZS

Zhenya Skrebanov in Qlik BI chat
И когда они нужны вызываю из QVD , но не резидентом, в случае если много резидентных загрузок и больших объемов
источник