QlikWorld 2020 Global Conference. Join us to discover how to get the most from your data. Act fast. Register now and save.

Creazione di un'app modello On-demand

Un'app modello On-demand è una normale app di Qlik Sense con un'importante differenza: il suo script di caricamento contiene espressioni di associazione dati utilizzate per formulare le query sulle sorgenti dati. Queste espressioni di associazione dati vengono utilizzate al momento della generazione dell'app On-demand per leggere i valori dallo stato di selezione dell'app di selezione e associarli allo script dell'app modello in modo che l'app generata venga caricata con un sottogruppo di dati controllato dall'utente.

L'app modello si collega in genere alla stessa sorgente dati dell'app di selezione. Lo script di caricamento di un'app di selezione carica generalmente dati aggregati per ridurre i volumi di dati offrendo allo stesso tempo visualizzazioni interattive di dimensioni e misure importanti. Lo script di caricamento di un'app modello utilizza query che caricano un sottogruppo controllato di dati più granulari.

Nota: Un'app modello On-demand non carica dati direttamente. Se si tenta di caricare dati dall'app modello, verrà restituito un errore. Il collegamento dell'app modello deve essere valido, ma per verificare il corretto funzionamento della connessione è necessario generare un'app on-demand. Quando essa viene generata, lo script di caricamento viene modificato dal servizio app on-demand per caricare lo stato di selezione dell'app di selezione on-demand. Se l'app on-demand viene generata senza errori, ciò significa che la connessione nell'app modello funziona correttamente.

Struttura di un'app modello

Un'app modello è collegata a un'app di selezione mediante un collegamento di navigazione app On-demand. Il collegamento di navigazione all'app include proprietà che controllano il numero di record sottoposti a query quando l'app On-demand viene caricata con dati. Lo script di caricamento dell'app modello contiene espressioni di associazione dati che specificano quali dati dei campi dell'app di selezione vengono utilizzati per formulare le query generate durante il caricamento dei dati nell'app On-demand.

Nota: Nell'installazione di Qlik Sense Enterprise on Windows è inclusa un'app modello On-demand di esempio, nel percorso ProgramData\Qlik\Examples\OnDemandApp\sample.

Le espressioni di associazione dati hanno la forma:

$(od_FIELDNAME)

Il prefisso od_ viene utilizzato per associare lo stato di selezione dell'app di selezione allo script di caricamento dell'app on-demand, la quale viene creata copiando l'app modello. La parte dell'espressione di associazione dati che segue il prefisso od_ deve essere un nome che corrisponde ad un campo nell'app di selezione. Quando viene generata l'app on-demand, lo stato di selezione attuale dell'app di selezione viene utilizzato per ottenere i valori desiderati da associare per ogni campo. Ogni occorrenza di un'espressione $(od_FIELDNAME) nello script di caricamento dell'app on-demand appena creata viene sostituita con l'elenco dei valori selezionati per il campo corrispondente nello stato di selezione dell'app di selezione.

Per ulteriori informazioni sull'associazione dei valori mediante le istruzioni LOAD INLINE, vedere Espressioni di associazione in app modello On-demand.

Affinché la sintassi SQL sia valida, l'istruzione SELECT dell'app modello per il filtraggio su più valori deve utilizzare una clausola IN. Si consiglia di scrivere una subroutine per creare la clausola WHERE corretta:

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;

Prima di chiamare la subroutine ExtendWhere, è necessario impostare la variabile WHERE_PART.

SET WHERE_PART = '';

Se si desidera che l'istruzione SQL abbia una clausola WHERE fissa in aggiunta alle clausole che verranno inserite dall'app di selezione, inserire 'WHERE <condition>' nell'istruzione SET. In caso contrario, utilizzare semplicemente l'istruzione SET.

Di seguito è riportato un esempio di utilizzo della subroutine 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

L'elenco dei nomi di campo deve corrispondere ai nomi dei campi utilizzati in ciascuna associazione di campo creata.

Dopo la creazione dell'elenco dei valori per ogni campo, è possibile scrivere un'istruzione SELECT. Ad esempio:

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

La parte $(WHERE_PART) dell'istruzione SELECT verrà espansa per includere la clausola WHERE generata dall'esecuzione del ciclo FOR-NEXT illustrato sopra. L'elenco delle espressioni di colonna che segue la parola chiave SELECT deve essere modificato per corrispondere alle colonne della specifica tabella del database.

Avviso: Evitare di utilizzare i nomi dei campi dell'app modello quando si creano le variabili di associazione dell'app On-demand. Le variabili definite nello script diventano disponibili nell'app modello a cui si fa riferimento quando si creano le visualizzazioni dati. La scelta di variabili di associazione dell'app On-demand che non si sovrappongano ai campi nel modello consente di evitare un'involontaria confusione tra i campi nell'app modello e le variabili di associazione dell'app On-demand nello script di caricamento dei dati. Una pratica consigliata è quella di stabilire un prefisso per le variabili di associazione dell'app On-demand. Ad esempio, utilizzare X_ORIGIN invece di ORIGIN.

Single Sign-On (SSO)

Le app On-demand possono utilizzare il single sign-on (SSO) con le sorgenti dati che supportano il SSO. L'engine e la sorgente dati devono essere configurati per consentire il SSO.

Per ulteriori informazioni, vedere Configurazione di SAP HANA per il Single Sign-On SAML con Qlik Sense (solo in lingua inglese) e Configurazione di Cloudera Impala per il Single Sign-On (solo in lingua inglese).

Una volta configurati l'engine e la sorgente dati per il SSO, l'app modello deve abilitare il SSO aggiungendo la sintassi seguente allo script dell'app modello:

///!ODAG_SSO

On-Demand App Service analizza lo script quando viene generata un'app On-demand e ogni volta che viene ricaricata.

Quando si carica un'app On-demand con il SSO, l'identità dell'utente finale viene inviata alla sorgente dati. L'utente finale deve disporre dell'accesso alle sorgenti utilizzate nelle connessioni dati dell'app modello. Vengono caricati solo i dati a cui l'utente può accedere in queste sorgenti, anche nel caso in cui venga selezionata una serie di dati più grande.

Avviso: Le app On-demand generate dalle app modello che utilizzano il single sign-on (SSO) non possono essere pubblicate.

Ricarica nodi per le app modello

Gli amministratori possono controllare dove vengono ricaricate le app on-demand in un ambiente a più nodi impostando regole di bilanciamento del carico sulle app modello. Quando viene impostata una regola di bilanciamento del carico, tutte le app generate da collegamenti all'app modello verranno caricate in base alla regola applicata all'app modello. Per ulteriori informazioni, vedere Gestione di app On-demand (solo in lingua inglese).