Använda underordnade frågor med Direkt upptäckt
Om kardinaliteten av nyckelfältet som slår samman tabellen, det vill säga om den innehåller ett stort antal distinkta värden, kan ett urval i Qlik Sense generera en mycket lång SQL-sats, eftersom WHERE key_field IN-satsen kan innehålla ett stort antal värden. I så fall är en möjlig lösning att låta Qlik Sense skapa underordnade frågor istället.
För att illustrera detta använder vi ett exempel där en produkttabell (ProductTable) är länkad till en försäljningsordertabell (SalesOrderDetail) med hjälp av ett produkt-id (ProductID), där båda tabellerna används i Direkt upptäckt-läge.
Vi skapar ett diagram med OrderMonth som dimension och Sum(Subtotal) som mått, samt en filterruta för att välja Size.
Scenario 1: Låg kardinalitet
I det här scenariet innehåller produkttabellen ett lågt antal distinkta produkter, 266. Om vi gör ett urval i Size, genererar Direkt upptäckt en SQL-sats för att returnera data med hjälp av en WHERE ProductID IN-sats som innehåller produkt-ID som matchar den valda storleken, i det här fallet 19 produkter.
De SQL-data som genereras ser ut så här:
Scenario 2: Använda delfrågor
Om samma exempel innehåller ett högt antal distinkta produkter, till exempel 20 000, kan användning av ett dimensionsfilter som t.ex. Size generera en SQL-sats med en WHERE ProductID IN-sats som innehåller tusentals produkt-ID. Den sats som då genereras kan vara för lång för att kunna hanteras av datakällan, på grund av begränsningar eller problem med minne eller prestanda.
Lösningen är att låta Qlik Sense skapa underordnade frågor istället genom att ställa in DirectEnableSubquery på sann. Den genererade SQL-satsen kanske ser ut så här istället:
Storleken på WHERE ProductID IN-satsen beror då inte längre på antalet nycklar som urvalet ger upphov till.
Följande begränsningar gäller när du använder underordnade frågor:
- Syntaxen för underordnade frågor tillämpas bara om du väljer data som kräver filtrering av ett diagram med hjälp av data från en annan tabell.
- Mängden data i nycklarna är en avgörande faktor, inte antalet nycklar i sig.
- Underordnade frågor tillämpas bara om alla tabeller är i läget Direkt upptäckt. Om du filtrerar diagrammet med hjälp av data från en tabell som inkluderas i minnesläge kommer en IN-sats att genereras.