QlikWorld 2020 Global Conference. Weź udział i dowiedz się, jak w pełni wykorzystać dane. Nie zwlekaj. Zarejestruj się już teraz, by zaoszczędzić.

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 oraz temat Konfigurowanie jednokrotnego logowania dla systemu Cloudera Impala.

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.