Skapa en on-demand-mallapp

En on-demand-mallapp är en vanlig Qlik Sense-app med en viktig skillnad: dess laddningsskript innehåller databindningsuttryck som används för att formulera frågorna som ställs på datakällorna. Dessa databindningsuttryck används vid genereringen av on-demand-appen för att läsa värden i urvalsläget i urvalsappen och binda dem till skriptet i mallappen så att den genererade appen laddas med en användarstyrd delmängd av data.

Mallappen ansluter normalt sett till samma datakälla som urvalsappen. Laddningsskriptet för en urvalsapp laddar vanligtvis aggregerade data för att reducera datavolymerna samtidigt som interaktiva visualiseringar av viktiga dimensioner och mått erbjuds. Laddningsskriptet för en mallapp använder frågor som laddar en kontrollerad delmängd av mer detaljerade data.

Observera: En on-demand-mallapp laddar inte data direkt. Att försöka ladda data från mallappen resulterar i ett fel. Kopplingen till mallappen måste vara giltig, men för att prova om kopplingen fungerar måste du generera en on-demand-app. När en on-demand-app genereras ändras laddningsskriptet av on-demand-app-tjänsten för att ladda on-demand-urvalsappens urvalsstatus. Du vet att kopplingarna i mallappen fungerar om on-demand-appen genereras felfritt.
Observera: Tänk på apparnas storlek när du utvecklar on-demand-mallappar i Kubernetes. Beroende på din utrullning kan begränsningar gälla för hur mycket du kan lagra. Molnutrullningen kan också växa om du använder mycket lagringsutrymme. Kontakta din systemadministratör för mer information.

Mallappens struktur

En mallapp är länkad till en urvalsapp med en navigeringslänk för on-demand-appen. Appnavigeringslänken innehåller egenskaper som styr antalet poster som frågas efter när on-demand-appen laddas med data. Laddningsskriptet för mallappen innehåller databindningsuttryck som anger vilka fältdata från urvalsappen som ska användas för att formulera frågor som utfärdas vid laddning av data i on-demand-appen.

Observera: Ett exempel på en on-demand-mallapp ingår i Qlik Sense Enterprise on Windows-installationen på ProgramData\Qlik\Examples\OnDemandApp\sample. Den här funktionen är inte tillgänglig i Kubernetes.

Databindningsuttryck har formen:

$(od_FIELDNAME)

Prefixet od_ används för att binda urvalsläget för urvalsappen till laddningsskriptet för On-demand-appen, som skapas genom att mallappen kopieras. Den del av databindningsuttrycket som följer efter prefixet od_ måste vara ett namn som matchar ett fält i urvalsappen. När on-demand-appen genereras används det aktuella urvalsläget i urvalsappen för att hämta de önskade värdena att binda för varje fält. Varje förekomst av ett $(od_FIELDNAME)-uttryck i laddningsskriptet för den nya on-demand-appen ersätts med listan över valda värden för motsvarande fält i urvalsläget för urvalsappen.

Mer information om att binda värden med INLINE load-satser, see Bindningsuttryck i on-demand-mallappar.

För att vara giltig i SQL-syntaxen måste mallappens SELECT-sats för filtrering på flera värden ha en IN-sats. Vi rekommenderar att du skriver en underrutin för att generera rätt WHERE-sats:

SUB ExtendWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values = $(ValVarName); IF len(Values) > 0 THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART) AND $(ColName) IN ( $(Values) )'; ELSE LET WHERE_PART = ' WHERE $(ColName) IN ( $(Values) )'; ENDIF ENDIF END SUB;

Innan du anropar den underordnade rutinen ExtendWhere måste du ställa in variabeln WHERE_PART.

SET WHERE_PART = '';

Om du vill att SQL-satsen ska ha en oförändrad WHERE-sats utöver de satser som infogas av urvalsappen, infogar du ett 'WHERE <condition>' i SET-satsen. I annat fall använder du den enkla SET-satsen.

Följande är ett exempel på hur den underordnade rutinen ExtendedWhere används:

FOR EACH fldname IN 'ORIGIN', 'DEST', 'YEAR', 'QUARTER', 'ORIGIN_STATE_ABR', 'DEST_STATE_ABR' LET vallist = $(fldname); WHEN (IsNull(vallist)) LET vallist = ''; IF len(vallist) > 0 THEN CALL ExtendWhere('$(fldname)','vallist'); ENDIF NEXT fldname

Listan över fältnamn bör matcha namnen på de fält som används i varje fältbindning du har skapat.

När du har skapat värdelistan för varje fält kan du skriva en SELECT-sats. Exempel:

SQL SELECT "MKT_ID", "YEAR", "QUARTER", "ORIGIN", "ORIGIN_STATE_ABR", "DEST", "DEST_STATE_ABR", "TICKET_CARRIER", "FARE_CLASS", "PASSENGERS", "DISTANCE", 1 AS "FLIGHT_COUNT" FROM "SAPH7T"."/QT/AIRPORT_FACT" $(WHERE_PART);

$(WHERE_PART)-delen av SELECT-satsen expanderas för att inkludera den WHERE-sats som genereras vid exekveringen av FOR-NEXT-slingan som illustreras ovan. Listan över kolumnuttryck som följer nyckelordet SELECT bör modifieras för att matcha tabellkolumnerna i den specifika databasen.

Varning: Undvik att använda fältnamnen i mallappsmodellen när du skapar bindande variabler för en on-demand-app. Variabler som definieras i skriptet blir tillgängliga i den mallappsmodell som det hänvisas till när man skapar datavisualiseringar. Genom att för on-demand-appen välja bindande variabler som inte har samma namn som fälten i modellen undviker du att fälten i mallappsmodellen och de bindande variablerna för on-demand-appen blandas ihop i dataladdningsskriptet. Det är god sed att etablera ett prefix för bindande variabler för on-demand-appar. Använd till exempel X_ORIGIN istället för ORIGIN.

Enkel inloggning (SSO)

On-demand-appar kan använda single sign-on (SSO) med datakällor som stöder SSO. Motorn och datakällan måste konfigureras för att tillåta SSO.

Observera: Den här funktionen är inte tillgänglig i Kubernetes.

Mer information finns i Konfigurera SAP HANA för SAML Single Sign-On med Qlik Sense (endast på engelska) och Konfigurera Cloudera Impala för Single Sign-On (endast på engelska).

När motorn och datakällan har konfigurerats för SSO måste du aktivera SSO i mallappen genom att lägga till följande syntax i mallappens skript:

///!ODAG_SSO

On-Demand App Service parsar skriptet när en on-demand-app genereras och varje gång den laddas igen.

När en on-demand-app laddas med SSO skickas slutanvändarens identitet till datakällan. Slutanvändaren måste ha åtkomst till källorna som används i mallappens datakopplingar. Endast data som användaren har åtkomst till i källorna laddas, även om en större datauppsättning är vald.

Varning: Det går inte att publicera on-demand-appar som genereras från mallappar som använder single sign-on (SSO).

Ladda noder igen för mallappar

Administratörer kan kontrollera var on-demand-appar laddas igen i miljöer med flera noder genom att ställa in regler för lastbalansering på mallappar. När en lastbalanseringsregel ställs in laddas alla appar som genererats från länkar till mallappen enligt den regel som tillämpas på mallappen. Mer information finns i Hantera on-demand-appar (endast på engelska).

Observera: Den här funktionen är inte tillgänglig i Kubernetes.

Hjälpte den här informationen?

Tack för att du berättar det här. Är det något du vill säga om det här avsnittet?

Varför var informationen inte till hjälp och hur kan vi förbättra den?