Vai al contenuto principale

Espressioni di associazione in app modello On-demand

Le associazioni dati in un'app modello specificano quali dati di un'app di selezione corrispondente vengono utilizzati per formulare le query generate durante il caricamento dei dati in un'app On-demand.

La forma base delle espressioni di associazione--$(odag_FIELDNAME)--non è l'unico metodo disponibile per associare le espressioni. Gli altri prefissi possono essere utilizzati per affinare le selezioni e per garantire che l'app modello carichi correttamente i dati.

Avviso: Le app modello create originariamente utilizzando l'estensione di Qlik Sense per On-demand App Generation devono essere modificate per utilizzare l'approccio illustrato sotto per associare un gran numero di selezioni da un campo.

Prefissi di associazione disponibili

La forma generica di un prefisso corrisponde a odag[s|o][n][cnt], in cui:

  • s - include solo valori selezionati
  • o - include solo valori opzionali
  • n - sceglie la versione numerica, per impostazione predefinita senza virgolette
  • cnt - inserisce il numero di valori al posto dei valori effettivi

La tabella seguente fornisce un elenco di tutte le versioni dei prefissi di associazione disponibili. Gli esempi prevedono un campo denominato MyField con 1, 2, 3 come valori selezionati (valori verdi) e 4 come valore selezionato opzionale (valore bianco).

Prefissi di associazione
Prefisso Descrizione Esempio Sostituito con
odag_ Sostituito dai valori selezionati (verdi) e opzionali (bianchi). Sceglie la versione testuale dei valori. Si tratta del prefisso standard per i valori delle stringhe. $(odag_MyField) '1','2','3','4'
odagcnt_ Sostituito dal numero di valori nell'associazione odag_ corrispondente. Questo prefisso viene utilizzato per l'ottimizzazione delle query. $(odagcnt_MyField) 4
odagn_

Sostituito dai valori selezionati (verdi) e opzionali (bianchi). Sceglie la versione numerica dei valori. Si tratta del prefisso standard per i valori numerici.

Nota:

Se il modello dati è tale da non consentire la presenza di valori selezionati o opzionali del campo, sarà necessario specificare un noValue nell'espressione. Ad esempio, $(odagn_MyField){"noValue":"-99999"}.

Per ulteriori informazioni, vedere Modifica dei caratteri di citazione e delimitazione dei valori.

$(odagn_MyField) 1,2,3,4
odagncnt_ Sostituito dal numero di valori nell'associazione odagn_ corrispondente. Questo viene utilizzato per l'ottimizzazione delle query. $(odagncnt_MyField) 4
odago_

Sostituito dai valori opzionali (bianchi). Sceglie la versione testuale dei valori. Viene utilizzato per l'ottimizzazione delle query.

Ottimizzazione per database di grandi dimensioni.

$(odago_MyField) '4'
odagocnt_ Sostituito dal numero di valori nell'associazione odago_ corrispondente. Questo viene utilizzato per l'ottimizzazione delle query. $(odagocnt_MyField) 1
odagon_

Sostituito dai valori opzionali (bianchi). Sceglie la versione numerica dei valori. Viene utilizzato per l'ottimizzazione delle query.

Ottimizzazione per database di grandi dimensioni.

$(odagon_MyField) 4
odagoncnt_ Sostituito dal numero di valori nell'associazione odagon_ corrispondente. Questo viene utilizzato per l'ottimizzazione delle query. $(odagoncnt_MyField) 1
odags_

Sostituito dai valori selezionati (verdi). Sceglie la versione testuale dei valori. Viene utilizzato per l'ottimizzazione delle query.

Ottimizzazione per database di grandi dimensioni.

$(odags_MyField) '1','2','3'
odagscnt_ Sostituito dal numero di valori nell'associazione odags_ corrispondente. Questo viene utilizzato per l'ottimizzazione delle query. $(odagscnt_MyField) 3
odagsn_

Sostituito dai valori selezionati (verdi). Sceglie la versione numerica dei valori. Viene utilizzato per l'ottimizzazione delle query.

Ottimizzazione per database di grandi dimensioni.

$(odagsn_MyField) 1,2,3
odagsncnt_ Sostituito dal numero di valori nell'associazione odagsn_ corrispondente. Questo viene utilizzato per l'ottimizzazione delle query. $(odagsncnt_MyField) 3
Nota:

I valori vuoti vengono filtrati nelle versioni testuali. I valori non numerici e NaN vengono filtrati nelle versioni numeriche.

Ottimizzazione per database di grandi dimensioni

I prefissi odags_ e odagsn_ sono destinati all'ottimizzazione delle query. In assenza di selezione nei campi associati, odag_ include tutti i valori, mentre odags_ non include alcun valore. In alcuni casi, è più efficiente utilizzare i prefissi odags_ e odagscnt_. Ciò consente di testare se il set di valori risulta vuoto. Ad esempio, quanto riportato di seguito risulta più efficiente in assenza di selezioni effettuate in MyField rispetto al testing per tutti i valori in odag_MyField:

WHERE ($(odagscnt_MyField)=0 OR MyColumn IN ($(odags_MyField)))

odags_ non può essere utilizzato in presenza di un campo alternativo da selezionare nell'app di selezione che non rappresenta un campo on-demand. Ad esempio, se l'utente effettua selezioni in CountryName, ma l'espressione di associazione è sul campo associato CountryCode, non è possibile utilizzare odags_. In tali casi, è possibile utilizzare odago_. In assenza di valori in un'associazione odago_, ciò potrebbe significare che dovrebbero essere inclusi tutti i valori o che non ne dovrebbe essere incluso nessuno.

Associazione di valori numerici

Quando i dati da associare all'app On-demand consistono in numeri invece di stringhe, è utile disabilitare l'aggiunta di virgolette per racchiudere i campi numerici. Ad esempio, se i record di vendite includono una colonna DAY_OF_WEEK numerica e si desidera consentire all'utente dell'app di selezione di scegliere combinazioni arbitrarie di DAY_OF_WEEK, si integrerà la query di aggregazione utilizzata per il caricamento dell'app di selezione includendo DAY_OF_WEEK sia nell'elenco SELECT che nell'elenco GROUP BY. Se i valori DAY_OF_WEEK sono racchiusi tra virgolette quando vengono selezionati, può verificarsi un errore di esecuzione della query se il database non supporta la conversione automatica del tipo da stringa a numerico.

Per gestire questa situazione, è possibile utilizzare una versione numerica del suffisso di espressione di associazione. Ciò spinge l'associazione di campo a utilizzare i valori numerici dall'app di selezione e non i valori di stringa. Sono disponibili le seguenti versioni numeriche:

  • odagn_
  • odagon_
  • odagsn_

Utilizzando le versioni numeriche, i valori vengono prelevati dalla parte numerica nei valori duali che archiviano i valori selezionati, inoltre i valori non presentano virgolette per impostazione predefinita.

Richiesta di un numero specifico di selezioni

In alcune situazioni può essere necessario imporre che la query dell'app On-demand contenga uno specifico numero o intervallo di valori per un campo specifico. Ad esempio, se la query dell'app On-demand contiene una clausola BETWEEN per ottenere tutte le vendite tra una data di inizio e una data di fine, l'espressione di associazione per il campo YEARQUARTER può avere il suffisso sintattico [2] che richiederà la selezione di esattamente due valori per YEARQUARTER, come in:

$(odag_YEARQUARTER)[2]

Il punto di navigazione app On-demand nell'app di selezione resterà disabilitato finché non vi saranno esattamente due valori di YEARQUARTER selezionati. Verrà visualizzato un messaggio per indicare che devono essere selezionati esattamente due valori di YEARQUARTER.

I vincoli di quantità della selezione creano un prerequisito di collegamento tra l'app di selezione e l'app On-demand. Ciò è diverso dalle espressioni di associazione che non utilizzano vincoli di quantità. Ad esempio, quando lo script dell'app modello contiene un'espressione di associazione senza vincoli di quantità, come in:

$(odag_MYFIELD)

non è richiesto che l'app di selezione contenga un campo denominato MYFIELD, né che vi siano valori selezionati del campo, se esistente. Se l'app di selezione non contiene un campo denominato MYFIELD o semplicemente l'utente non effettua selezioni da tale campo, il punto di navigazione app On-demand può comunque essere abilitato quando si effettuano altre selezioni per soddisfare la condizione del valore limite di record.

Se, d'altra parte, l'espressione di associazione è:

$(odag_MYFIELD)[1+]

l'app di selezione deve ora soddisfare due requisiti:

  • L'app di selezione deve contenere un campo denominato MYFIELD.
  • L'utente deve selezionare almeno un valore per MYFIELD.

Questo tipo di espressione di associazione deve essere utilizzato con cautela poiché limita quali app di selezione possono essere utilizzate con l'app modello. Questo vincolo di quantità non deve essere utilizzato sulle associazioni di un'app modello a meno di non essere certi di voler imporre tale requisito di quantità per le selezioni a tutte le app di selezione che si collegano all'app modello.

Per eseguire il processo di associazione dati, il servizio app On-demand adotta un approccio basato sulla sostituzione di stringhe che non distingue i commenti nello script. Occorre pertanto evitare di utilizzare espressioni di associazione nei commenti, a meno che non si desideri che i commenti contengano l'elenco dei valori associati in seguito alla generazione dell'app.

Sono possibili altri vincoli di quantità. La tabella seguente riepiloga le diverse combinazioni di vincoli di quantità di selezione.

Varie combinazioni di vincoli di quantità di selezione
Modello vincolo Requisito selezione
$(odag_YEARQUARTER)[2] Devono essere selezionati esattamente 2 valori di YEARQUARTER.
$(odag_YEARQUARTER)[2-4] Devono essere selezionati tra 2 e 4 valori di YEARQUARTER.
$(odag_YEARQUARTER)[2+] Devono essere selezionati almeno 2 valori di YEARQUARTER.
$(odag_YEARQUARTER)[2-] Possono essere selezionati al massimo 2 valori di YEARQUARTER.
Nota: Il controllo per determinare se tutti i vincoli di quantità nell'app modello sono stati rispettati viene eseguito durante il processo di generazione dell'app. Se un vincolo di quantità non è rispettato, la richiesta di generazione dell'app verrà respinta e sarà visualizzato un messaggio di errore.

Modifica dei caratteri di citazione e delimitazione dei valori

Quando un elenco di valori letti da un campo selezionato in un'app di selezione è inserito nello script di un'app modello, i valori sono racchiusi tra virgolette singole e separati da virgole. Questi sono i caratteri predefiniti per la citazione e la delimitazione. Questi valori possono essere modificati in una sintassi aggiunta all'istruzione di associazione per ciascun campo. Ad esempio:

$(odag_ORIGIN){"quote": "|", "delimiter": ";"}

Questi nuovi valori verranno quindi utilizzati per creare l'elenco dei valori di associazione tratti dall'app di selezione. Ad esempio, se i valori selezionati sono i primi tre mesi dell'anno, l'elenco verrebbe creato come:

|January|;|February|;|March|

I valori predefiniti per i caratteri di citazione e delimitazione funzionano per la maggior parte dei database standard.SQL Potrebbero tuttavia non funzionare per alcuni database SQL e non funzionano per molte sorgenti di dati dinamiche, come NoSQL e REST. Per queste sorgenti è necessario aggiungere questa espressione di associazione per modificare i caratteri di citazione e delimitazione.

La tabella seguente presenta i parametri di formato per la modifica dei caratteri di citazione e delimitazione

Parametri di formato
Parametro Valore predefinito Definizione
citazione

' (virgoletta singola) per prefissi testuali

vuoto per prefissi numerici

Verrà aggiunta prima e dopo ciascun valore
delimitatore , (virgola) Verrà aggiunta tra tutti i valori
quoteReplace '' (virgolette singole doppie)

Quando il valore non è vuoto e la citazione non è vuota, tutte le occorrenze delle virgolette all'interno dei valori verranno sostitute dalla stringa specificata.

Nota: quoteReplace non è supportato come parametro per prefissi numerici come odagn_. quoteReplace è ignorato dai prefissi numerici.
noValue (vuoto)

In assenza di valori selezionato per un campo, verrà utilizzato questo valore. Questo parametro è utile quando nella selezione possono non essere presenti valori di un particolare campo.

Il valore deve essere impostato a un valore che non esiste nei dati sorgente. Per i valori numerici, ad esempio, utilizzare un valore negativo se tutti i valori nel database sono positivi.

Nota: Per i valori senza virgolette, noValue deve essere specificato se i valori selezionati del campo possono rappresentare un set vuoto.

Le tabelle seguenti descrivono la specifica di formato e i valori generati per odag_ e odagn_. I valori inseriti generati sono basati sui valori dati predefiniti di VAL1, VAL2.

Specifiche di formato e valori generati di esempio odag_
Specifica del formato Descrizione Valori inseriti generati
non specificato

Elenco di valori separati da virgole, demarcati con ' .

'VAL1','VAL2'
{"quote": "", "delimiter": ""} Valori concatenati VAL1VAL2

{"quote": "X", "delimiter": "Y"}

Valori demarcati da X e delimitati da Y.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} Valori demarcati da X e delimitati da YY.  XXVAL1XXYYXXVAL2XX
{"quote": "X"} Valori demarcati da X e delimitati da , (predefinito).  XVAL1X,XVAL2X
{"delimiter": "YY"} Valori demarcati da ' (predefinito) e delimitati da YY 'VAL1'YY'VAL2'
{"quote": ""} Valori senza virgolette delimitati da ,. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

Valori demarcati da A e delimitati dalla virgola (predefinito). Un valore all'interno del campo verrà sostituito da \A.

Nota:

In questo esempio, è necessario inserire due \ dato che \ rappresenta il carattere di escape nel formato json.

AV\AL1A,AV\AL2A
Specifiche di formato e valori generati di esempio odagn_
Specifica del formato Descrizione Valori inseriti generati
non specificato

Elenco di valori senza virgolette separati da virgole. Tenere presente che verranno utilizzati i valori numerici.

VAL1,VAL2
{"delimiter": "YY"} Valori senza virgolette delimitati da YY VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} Rispetto al prefisso odag_, il parametro quoteReplace verrà ignorato. AVAL1A,AVAL2A

Elaborazione di singoli valori

Quando è necessaria la singola elaborazione dei valori di campo, è possibile utilizzare un metodo inline per generare valori nella variabileValues ed eseguire un'elaborazione arbitraria con Replace o un'altra funzione. Nell'esempio in basso, Replace viene utilizzato con valori segnaposto.

MyTempBindingData: LOAD * INLINE [VAL $(odag_MyField){"quote": "", "delimiter": "\n"} ]; _TempTable: LOAD Concat(chr(39) & Replace(text, from_str, to_str) & chr(39), ',') as CombinedData Resident MyTempBindingData; LET Values = Peek('CombinedData',0,'_TempTable'); drop table _TempTable; drop table MyTempBindingData;