Tworzenie aplikacji szablonu On-demand

Aplikacje szablonu On-demand to zwykłe aplikacje Qlik Sense, które charakteryzują się istotną cechą: zawierają skrypty ładowania z wyrażeniami wiązania danych używanymi do formułowania zapytań wykonywanych na źródłach danych. Wyrażenia te są używane w czasie generowania aplikacji On-demand w celu odczytu wartości ze stanu selekcji aplikacji selekcji i w celu powiązania ich ze skryptem aplikacji szablonu w taki sposób, aby do generowanej aplikacji został załadowany kontrolowany przez użytkownika podzbiór danych.

Aplikacja szablonu zwykle łączy się z tym samym źródłem danych co aplikacja selekcji. Skrypt ładowania aplikacji selekcji zwykle ładuje zagregowane dane, aby zmniejszyć ilości danych, jednocześnie oferując interaktywne wizualizacje ważnych wymiarów i miar. Skrypt ładowania aplikacji szablonu używa zapytań, które ładują kontrolowany podzbiór danych o większej szczegółowości.

Uwaga: Aplikacja szablonu On-demand nie ładuje danych bezpośrednio. Próba załadowania danych z aplikacji szablonu spowoduje błąd. Połączenie aplikacji szablonu musi być aktywne, ale w celu sprawdzenia, czy połączenie działa poprawnie należy wygenerować aplikację On-demand. Gdy aplikacja On-demand zostanie wygenerowana, skrypt ładowania zostanie zmodyfikowany przez usługę aplikacji On-demand w celu załadowania stanu selekcji aplikacji selekcji On-demand. Jeśli aplikacja On-demand zostanie wygenerowana bez błędu, oznacza to, że połączenia w aplikacji szablonu działają poprawnie.

Struktura aplikacji szablonu

Aplikacja szablonu jest powiązana z aplikacją selekcji za pośrednictwem łącza nawigacyjnego aplikacji On-demand. Łącze nawigacyjne aplikacji zawiera właściwości, które kontrolują liczbę rekordów uwzględnianych przez zapytania podczas ładowania danych do aplikacji On-demand. Skrypt ładowania należący do aplikacji szablonu zawiera wyrażenia do wiązania danych określające dane pola z aplikacji selekcji, które będą używane do formułowania zapytań składanych podczas ładowania danych do aplikacji On-demand.

Uwaga: Podczas instalacji programu Qlik Sense w folderze ProgramData\Qlik\Examples\OnDemandApp\sample umieszczana jest przykładowa aplikacja szablonu On-demand.

Wyrażenia do wiązania danych mają następującą postać:

$(od_FIELDNAME)

Prefiks od_ służy do powiązania stanu selekcji aplikacji selekcji ze skryptem ładowania należącym do aplikacji On-demand, który jest tworzony przez skopiowanie aplikacji szablonu. Część wyrażenia do wiązania danych, która następuje po prefiksie od_, musi być nazwą zgodną z nazwą pola w aplikacji selekcji. Gdy aplikacja On-demand zostanie wygenerowana, bieżący stan selekcji aplikacji selekcji jest używany do uzyskania żądanych wartości do powiązania z każdym polem. Każde wystąpienie wyrażenia $(od_FIELDNAME) w skrypcie ładowania należącym do nowo utworzonej aplikacji On-demand jest zastępowane listą wartości wybranych dla odpowiadającego pola w stanie selekcji aplikacji selekcji.

Informacje o wiązaniu wartości za pomocą instrukcji ładowania INLINE zawiera sekcja Tworzenie powiązań między wyrażeniami w aplikacjach szablonu On-demand.

Składnia aplikacji szablonu będzie poprawnym kodem SQL, jeśli w instrukcji SELECT (aplikacji szablonu) przeznaczonej do filtrowania wielu wartości zostanie użyta klauzula IN. Zalecane jest napisanie podprogramu w celu tworzenia poprawnej klauzuli WHERE:

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;

Przed wywołaniem podprogramu ExtendWhere należy ustawić zmienną WHERE_PART.

SET WHERE_PART = '';

Jeśli instrukcja SQL ma zawierać oryginalną klauzulę WHERE, a także klauzule, które będą wprowadzane przez aplikację selekcji, należy wstawić warunek 'WHERE <condition>' do instrukcji SET. Jeśli nie jest to wymagane, należy użyć po prostu instrukcji SET.

Poniżej przedstawiono przykład użycia podprogramu ExtendedWhere:

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

Lista nazw pól powinna pasować do nazw pól używanych w każdym utworzonym wiązaniu pól.

Po utworzeniu listy wartości dla poszczególnych pól można zapisać instrukcję SELECT. Na przykład:

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);

Część $(WHERE_PART) instrukcji SELECT zostanie rozszerzona, aby obejmowała klauzulę WHERE wygenerowaną przez wykonanie pętli FOR-NEXT przedstawionej powyżej. Listę wyrażeń kolumn, która następuje po słowie kluczowym SELECT, należy zmodyfikować, aby dopasować ją do kolumn tabeli w konkretnej bazie danych.

Ostrzeżenie: W przypadku tworzenia zmiennych powiązania aplikacji On-demand należy unikać używania nazw pól z modelu aplikacji szablonu. Zmienne zdefiniowane w skrypcie stają się dostępne w modelu aplikacji szablonu, do którego powstaje odniesienie podczas tworzenia wizualizacji danych. Wybranie takich zmiennych powiązania aplikacji On-demand, które nie pokrywają się z polami w modelu, zapobiegnie pomyleniu pól w modelu aplikacji szablonu ze zmiennymi powiązania aplikacji On-demand w skrypcie ładowania danych. Sprawdzoną metodą postępowanie jest ustalenie prefiksu dla zmiennych powiązania aplikacji On-demand. Na przykład należy użyć X_ORIGIN zamiast ORIGIN.

Jednokrotne logowanie (SSO, ang. Single Sign-On)

Aplikacje On-demand mogą używać single sign-on (SSO) ze źródłami danych, które obsługują SSO. Silnik i źródło danych muszą być skonfigurowane w taki sposób, aby zezwalały na stosowanie SSO.

Więcej informacji zawiera temat Konfigurowanie jednokrotnego logowania SAML Qlik Sense do źródeł danych SAP HANA (tylko w języku angielskim) oraz temat Konfigurowanie jednokrotnego logowania dla systemu Cloudera Impala (tylko w języku angielskim).

Po skonfigurowaniu silnika i źródła danych pod kątem obsługi SSO w aplikacji szablonu należy włączyć SSO, dodając poniższą składnię do skryptu aplikacji szablonu:

///!ODAG_SSO

On-Demand App Service analizuje ten skrypt podczas generowania aplikacji On-demand i każdorazowo podczas jej przeładowania.

Gdy aplikacja On-demand zostanie załadowana z SSO, tożsamość użytkownika końcowego zostanie wysłana do źródła danych. Użytkownik końcowy musi mieć dostęp do źródeł używanych w połączeniach do danych aplikacji szablonu. Ładowane są tylko dane, do których użytkownik ma dostęp w tych źródłach, nawet jeśli wybrano większy zestaw danych.

Ostrzeżenie: Aplikacje On-demand generowane z aplikacji szablonu, które używają single sign-on (SSO), nie mogą być publikowane.

Przeładowywanie węzłów dla aplikacji szablonu

Administratorzy mogą kontrolować, gdzie w środowisku wielowęzłowym przeładowywane są aplikacje On-demand, ustawiając reguły równoważenia obciążenia w aplikacjach szablonu. Gdy ustawiona jest reguła równoważenia obciążenia, wówczas wszystkie aplikacje wygenerowane z łącz do aplikacji szablonu zostaną załadowane zgodnie z regułą, która obowiązuje względem aplikacji szablonu. Więcej informacji zawiera temat Zarządzanie aplikacjami On-demand (tylko w języku angielskim).