Korzystanie z zapytań podrzędnych w Direct Discovery
Jeśli liczebność pola klucza łączącego tabelę jest wysoka, czyli pole to zawiera dużą liczbę odrębnych wartości, dokonanie selekcji w Qlik Sense może wygenerować bardzo dużą instrukcję SQL, ponieważ klauzula WHERE key_field IN może zawierać bardzo dużo wartości. W takim przypadku ewentualnym rozwiązaniem może być zezwolenie Qlik Sense na tworzenie zapytań podrzędnych.
Aby zilustrować to działanie, w przykładzie tym tabela produktów (ProductTable) jest powiązana z tabelą zamówień sprzedaży (SalesOrderDetail) za pomocą pól identyfikatorów produktów (ProductID) (obie tabele są w trybie Direct Discovery).
Utworzono również wykres z wymiarem OrderMonth i miarą Sum(Subtotal) oraz pole filtru na potrzeby selekcji wartości Size.
Scenariusz 1: Niska liczebność
W tym scenariuszu tabela produktów zawiera niską liczbę odrębnych produktów (266). Po dokonaniu selekcji wartości Size Direct Discovery generuje instrukcję SQL w celu zwrócenia odpowiednich danych korzystającą z klauzuli WHERE ProductID IN zawierającej identyfikatory produktów odpowiadające wybranemu rozmiarowi (w tym wypadku jest to 19 produktów).
Wygenerowane zapytanie SQL jest następujące:
Scenariusz 2: Korzystanie z zapytań podrzędnych
Jeśli w tym samym przykładzie liczba odrębnych produktów byłaby wyższa, na przykład 20 tys., wybranie filtra wymiaru, na przykład Size, wygenerowałoby instrukcję SQL z klauzulą WHERE ProductID IN zawierającą tysiące identyfikatorów produktów. Wynikowa instrukcja byłaby zbyt duża, aby zostać przetworzona przez źródło danych ze względu na ograniczenia lub problemy dotyczące pamięci lub wydajności.
W zamian można zezwolić Qlik Sense na utworzenie zapytań podrzędnych. W tym celu należy nadać parametrowi DirectEnableSubquery wartość true. Wygenerowana instrukcja SQL może być następująca:
Rozmiar klauzuli WHERE ProductID IN nie zależy już od liczby kluczy wynikającej z dokonanej selekcji.
Stosowanie zapytań podrzędnych wiąże się z następującymi ograniczeniami:
- Składnia zapytań podrzędnych jest wywoływana tylko po dokonaniu selekcji danych obejmującym filtrowanie wykresu za pomocą danych z innej tabeli.
- Czynnikiem decydującym jest ilość danych w kluczach, a nie liczba kluczy.
- Zapytania podrzędne są wywoływane tylko wówczas, gdy wszystkie stosowne tabele są w trybie Direct Discovery. Jeśli wykres jest filtrowany za pomocą danych z tabeli w trybie opartym na pamięci głównej, wygenerowana zostanie klauzula IN.