Join - keep - qlik sense

Об'єднання - операція об'єднання двох таблиць в одну. Записи результуючої таблиці представляють собою комбінації записів у вихідних таблицях. При цьому дві такі записи, що становлять одну комбінацію в результуючій таблиці, як правило, мають загальне значення одного або декількох загальних полів. Таке об'єднання називається природним. У програмі Qlik Sense об'єднання може виконуватися в скрипті, створюючи логічну таблицю.

Таблиці, які знаходяться в скрипті, можна об'єднувати. Логіка Qlik Sense буде розпізнавати не окремі таблиці, а результати об'єднання, які будуть представлені в одній внутрішньої таблиці. У деяких випадках це потрібно, однак існують недоліки:

  • Завантажені таблиці часто стають більше, і програма Qlik Sense працює повільніше.
  • Деяка інформація може бути втрачена: частота (кількість записів) у вихідній таблиці може бути більше недоступна.

Функція Keep. яка дозволяє зменшити одну або обидві таблиці до перетину даних таблиць перед збереженням таблиць в програму Qlik Sense. призначена для зменшення кількості випадків, коли необхідно використати наявні об'єднання.

У цьому посібнику термін «об'єднання» зазвичай використовується для об'єднань, виконаних до створення внутрішніх таблиць. Однак асоціація, виконана після створення внутрішніх таблиць, по суті, також є об'єднанням.

Об'єднання всередині оператора SQL SELECT

При використанні деяких драйверів ODBC можна виконувати об'єднання всередині оператора SELECT. Це практично еквівалентно створенню об'єднання за допомогою префікса Join.

Однак більшість драйверів ODBC не дозволяють зробити повне зовнішнє об'єднання (двунаправленное). Вони дозволяють зробити тільки лівосторонній або правосторонній зовнішнє об'єднання. Лівосторонній (правосторонній) зовнішнє об'єднання включає тільки поєднання, в яких в лівій (правій) таблиці існує ключ об'єднання. Повний зовнішнє об'єднання включає всі поєднання. Програма Qlik Sense автоматично створює повне зовнішнє об'єднання.

Більш того, створення об'єднань в операторах SELECT значно складніше, ніж створення об'єднань в програмі Qlik Sense.

[Order Details] .ProductID, [Order Details].

UnitPrice, Orders.OrderID, Orders.OrderDate, Orders.CustomerID

RIGHT JOIN [Order Details] ON Orders.OrderID = [Order Details] .OrderID;

Цей оператор SELECT дозволяє об'єднати таблицю, яка містить замовлення неіснуючої компанії, і таблицю, що містить відомості про замовлення. Це правосторонній зовнішнє об'єднання, тобто будуть включені всі записи OrderDetails і записи зі значенням OrderID. яке відсутнє в таблиці Orders. Однак замовлення, що містяться в таблиці Orders. але не містяться в OrderDetails. не будуть включені.

Найпростішим способом створення об'єднання є використання префікса Join в скрипті, який дозволяє об'єднувати внутрішню таблицю з іншого іменованої таблицею або останньої створеної таблицею. Об'єднання буде зовнішнім і дозволить створити всі можливі поєднання значень з двох таблиць.

LOAD a, b, c from table1.csv;

join LOAD a, d from table2.csv;

Результуюча внутрішня таблиця має поля a. b. c і d. Кількість записів різниться в залежності від значень полів цих двох таблиць.

Імена поєднуваних полів повинні збігатися. Кількість об'єднуються полів може бути будь-яким. Зазвичай в таблицях повинно бути одне або декілька загальних полів. При відсутності загальних полів буде розглядатися декартовій твір таблиць. В принципі все поля можуть бути загальними, проте зазвичай в цьому немає сенсу. Поки ім'я раніше завантаженої таблиці не буде вказано в операторі Join. префіксом Join буде використовуватися остання створена таблиця. Тому порядок двох операторів не є довільним.

Явний префікс Join в скрипті завантаження даних виконує повне об'єднання двох таблиць. В результаті виходить одна таблиця. У багатьох випадках такі об'єднання призводять до створення дуже великих таблиць. Однією з основних функцій програми Qlik Sense є здатність до зв'язування таблиць замість їх об'єднання, що дозволяє скоротити використання пам'яті, підвищити швидкість обробки і гнучкість. Функція keep призначена для скорочення числа випадків необхідного використання явних об'єднань.

Префікс Keep між двома операторами LOAD або SELECT призводить до зменшення однієї або обох таблиць до перетину їх даних перед збереженням таблиць в програмі Qlik Sense. Перед префіксом Keep слід задати одне з ключових слів: Inner. Left або Right. Вибірка записів з таблиці здійснюється так само, як і при відповідному об'єднанні. Однак дві таблиці не об'єднує і зберігаються в програмі Qlik Sense у вигляді двох окремих іменованих таблиць.

Перед префіксами Join і Keep в скрипті завантаження даних можна використовувати префікс Inner.

При використанні цього префікса перед префіксом Join об'єднання двох таблиць буде внутрішнім. Отримана таблиця містить тільки поєднання з двох таблиць, що включають повний набір даних з обох сторін.

Якщо цей префікс використовується перед Keep. він вказує, що дві таблиці слід зменшити до галузі взаємного перетину, перш ніж вони зможуть бути збережені в програмі Qlik Sense.

У цих таблицях використовуються вихідні таблиці Table1 і Table2:

Приклади вихідних таблиць Inner

Inner Join

Спочатку виконується Inner Join щодо таблиць, в результаті чого утворюється таблиця VTable. містить тільки один рядок, тільки один запис, існуючу в обох таблицях, з даними з обох таблиць.

SELECT * from Table1;

inner join SELECT * from Table2;

Приклад Inner Join

Inner Keep

Якщо замість цього виконується Inner Keep. таблиць все одно буде дві. Дві таблиці, зрозуміло, зв'язані за допомогою загального поля A.

SELECT * from Table1;

inner keep SELECT * from Table2;

Приклад Inner Keep

Перед префіксами Join і Keep в скрипті завантаження даних можна використовувати префікс left.

При використанні цього префікса перед префіксом Join об'єднання двох таблиць буде лівостороннім. Отримана таблиця містить тільки поєднання з двох таблиць, що включають повний набір даних з першої таблиці.

Якщо цей префікс використовується перед префіксом Keep. він вказує, що другу таблицю слід зменшити до галузі взаємного перетину з першою таблицею перед збереженням в програмі Qlik Sense.

У цих таблицях використовуються вихідні таблиці Table1 і Table2:

Приклади вихідних таблиць Left

Спочатку виконується Left Join щодо таблиць, в результаті чого утворюється таблиця VTable. що містить всі рядки з таблиці Table1. суміщені з полями з співпадаючих рядків в таблиці Table2.

SELECT * from Table1;

left join SELECT * from Table2;

Join - keep - qlik sense

Приклад Left Join

Якщо замість цього виконується Left Keep. таблиць все одно буде дві. Дві таблиці, зрозуміло, зв'язані за допомогою загального поля A.

SELECT * from Table1;

left keep SELECT * from Table2;

Приклад Left Keep

Перед префіксами Join і Keep в скрипті завантаження даних можна використовувати префікс right.

При використанні цього префікса перед префіксом Join об'єднання двох таблиць буде правостороннім. Отримана таблиця містить тільки поєднання з двох таблиць, що включають повний набір даних з другої таблиці.

Якщо цей префікс використовується перед префіксом Keep. він вказує, що першу таблицю слід зменшити до галузі взаємного перетину з другої таблицею перед збереженням в програмі Qlik Sense.

У цих таблицях використовуються вихідні таблиці Table1 і Table2:

Приклади вихідних таблиць Right

Спочатку виконується Right Join щодо таблиць, в результаті чого утворюється таблиця VTable. що містить всі рядки з таблиці Table2. суміщені з полями з співпадаючих рядків в таблиці Table1.

SELECT * from Table1;

right join SELECT * from Table2;

Приклад Right Join

Якщо замість цього виконується Left Keep. таблиць все одно буде дві. Дві таблиці, зрозуміло, зв'язані за допомогою загального поля A.

SELECT * from Table1;

right keep SELECT * from Table2;

Приклад Right Keep

# X417; # x430; # x433; # x440; # x443; # x437; # x43A; # x430; # X43D; # x43E; # x432; # x44B; # x445; # X438; # X43E; # x431; # x43D; # x43E; # x432; # x43B; # x435; # x43D; # x43D; # x44B; # x445; # X437; # x430; # x43F; # x438; # x441; # x435; # x439; # X441; # X43F; # x43E; # x43C; # x43E; # x449; # x44C; # x44E; # X438; # x43D; # x43A; # x440; # x435; # x43C; # x435; # x43D; # x442; # x430; # x43B; # x44C; # x43D; # x43E; # x439; # X437; # x430; # x433; # x440; # x443; # x437; # x43A; # x438;

# X418; # x441; # x43F; # x43E; # x43B; # x44C; # x437; # x43E; # x432; # x430; # x43D; # x438; # x435; # X441; # x43E; # x43F; # x43E; # x441; # x442; # x430; # x432; # x43B; # x435; # x43D; # x438; # x44F; # X43A; # x430; # x43A; # X430; # x43B; # x44C; # x442; # x435; # x440; # x43D; # x430; # x442; # x438; # x432; # x44B; # X441; # x43E; # x435; # x434; # x438; # x43D; # x435; # x43D; # x438; # x44E;