L'istruzione Constrain può essere utilizzata in combinazione con le istruzioni Let o Set per definire le variabili dello script. L'istruzione Constrain permette di definire vincoli per i valori possibili per le variabili. Se la definizione di una variabile viola i vincoli, il ricaricamento fallisce. Con i vincoli, è possibile richiedere che i valori delle variabili corrispondano a tipi specifici, rientrino in intervalli numerici specifici e corrispondano a valori accettabili definiti dall'utente.
Sintassi:
Constrain variablename = json
Dove:
variablename è una variabile dello script.
json è un oggetto JSON valido che specifica i vincoli. I vincoli individuali vengono aggiunti all'interno di questo oggetto come coppie chiave-valore.
Tipi di vincoli
Tipo di vincolo (chiave)
Significato
Requisiti del vincolo (valore)
Esempi
"type"
Vincola i valori delle variabili a un tipo di dati specifico.
"text" specifica un tipo di testo.
"number" specifica un tipo numerico.
CONSTRAIN vExampleText = {"type": "text"}
CONSTRAIN vExampleNumeric = {"type": "number"}
"maxnum"
Imposta un valore massimo per una variabile.
Solo numeri (interi o a virgola mobile). È consentita la notazione scientifica.
CONSTRAIN vExample = {"maxnum": 5000}
"minnum"
Imposta un valore massimo per una variabile.
Solo numeri (interi o a virgola mobile). È consentita la notazione scientifica.
CONSTRAIN vExample = {"minnum": 250}
"valuesnum"
Definisce un elenco di valori numerici accettabili per la variabile.
Elenco di numeri separati da virgola racchiusi tra parentesi quadre. Ad esempio: [1,2,3]
CONSTRAIN vExample = {"valuesnum": [1,2,3]}
"valuestext"
Definisce un elenco di valori testuali accettabili per la variabile.
Elenco di stringhe separate da virgola racchiuse tra parentesi quadre. Ad esempio: ["a","b","c"]
Utilizzare l'istruzione Constrain per evitare che i valori indesiderati per le variabili vengano caricati nelle app analitiche. Le sezioni seguenti illustrano i modi specifici in cui è possibile utilizzarla.
Aggiornamento della variabile Tempo di ricaricamento
L'opzione Constrain è particolarmente utile quando viene utilizzata in combinazione con gli aggiornamenti delle variabili in tempo reale. Con gli aggiornamenti del tempo di ricaricamento delle variabili, è possibile aggiornare dinamicamente le variabili durante il ricaricamento dell'app, utilizzando la proprietà variables dell'API Ricaricamenti. L'istruzione Constrain impedisce che definizioni delle variabili dannose o formattate in modo improprio vengano incorporate nei ricaricamenti delle analisi.
Gli aggiornamenti del di tempo di ricarica delle variabili, insieme all'istruzione Constrain, supportano i seguenti casi d'uso:
App basate su modelli che caricano i dati in modo selettivo in base a condizioni come l'ID o il nome del client (che possono essere passate al momento del caricamento come variabili).
Controllo centralizzato sulle app distribuite su molti tenant Qlik Cloud
Migrazione dei flussi di lavoro e delle attività orientate alle variabili da QlikView e Qlik Sense Client-Managed nel cloud.
Sicurezza, affidabilità e collaborazione
Anche quando viene utilizzato al di fuori degli scenari di aggiornamento del tempo di ricaricamento delle variabili, Constrain migliora i controlli di sicurezza per la creazione degli script di caricamento, ad esempio durante lo sviluppo collaborativo degli script di caricamento. Ad esempio, il proprietario di un'app potrebbe definire dei vincoli per i valori delle variabili, informando i collaboratori delle condizioni specifiche che devono essere soddisfatte affinché l'app venga ricaricata con successo in modo affidabile.
Considerazioni
La definizione di Constrain per la variabile deve essere un oggetto JSON valido.
È possibile specificare più di un vincolo per una singola variabile. Tutti i vincoli di una variabile devono essere contenuti in un singolo oggetto di vincolo. Per esempio, vedere Esempi: vincoli multipli.
Se nell'app è già stata caricata una variabile dello script con un determinato nome, i tentativi successivi di definire vincoli e valori per quella variabile possono fallire a causa di conflitti tra le variabili originali e quelle ridefinite.
Per risolvere questi conflitti, ripristinare i vincoli e i valori delle variabili inserendo delle definizioni vuote. Esempi:
L'ordine della definizione della variabile e della definizione del vincolo non è importante. Tuttavia, nel caso in cui si verifichi un errore di ricaricamento correlato alla variabile, la riga in cui si verifica il punto di arresto sarà un'altra.
L'istruzione dello script Constrain limita le definizioni delle variabili solo per le variabili dello script. È possibile anche applicare vincoli alle variabili dello script e a quelle dell'utente finale (quelle create o aggiornate nella vista foglio o come variabili di sessione utilizzando l'API) utilizzando l'API pubblica. Per ulteriori informazioni, vedere Alternative di sviluppo per la definizione di vincoli delle variabili.
Alternative di sviluppo per la definizione di vincoli delle variabili
È possibile anche utilizzare l'API pubblica per definire i vincoli delle variabili, anziché utilizzare l'istruzione Constrain nello script di caricamento. Quando si definiscono i vincoli tramite API, tutti i tentativi di aggiornare i valori delle variabili — sia direttamente nello script di caricamento, nella vista foglio o tramite l'API Ricaricamenti — saranno soggetti ai vincoli.
Per definire i vincoli delle variabili tramite l'API pubblica, utilizzare l'oggetto GenericVariableConstraints nell'API Qlik Sense Engine (qix): GenericVariableConstraints.
Esempio: type
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per a deve essere di tipo number.
Un'istruzione LET che definisce la variabile a.
Script di caricamento
CONSTRAIN a = {"type": "text"};
LET a = 1000;
Risultati
Caricare i dati.
Il ricaricamento fallisce perché il vincolo richiede un tipo di testo per la variabile a. La definizione della variabile è un numero.
Al contrario, se si specifica number come valore di type nel vincolo, il ricaricamento verrà completato correttamente.
Esempio: maxnum
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che il valore massimo per la definizione della variabile per b deve essere 3000.
Un'istruzione LET che definisce la variabile b.
CONSTRAIN b = {"maxnum": "3000"};
LET b = 3001;
Risultati
Caricare i dati.
Il ricaricamento fallisce perché il vincolo richiede un valore massimo di 3000 per la variabile b. La definizione della variabile viene valutata come 3001.
Al contrario, se si specifica 2999 come valore di b, il ricaricamento verrà completato correttamente.
Esempio: minnum
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che il valore minimo per la definizione della variabile per b deve essere 3000.
Un'istruzione LET che definisce la variabile c.
CONSTRAIN c = {"minnum": "3000"};
LET c = 2999;
Risultati
Caricare i dati.
Il ricaricamento fallisce perché il vincolo richiede un valore minimo di 3000 per la variabile c. La definizione della variabile viene valutata come 2999.
Al contrario, se si specifica 3000 come valore di c, il ricaricamento verrà completato correttamente.
Esempio: valuesnum
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per d deve essere numerica e deve essere 2, 3 o 4.
Un'istruzione LET che definisce la variabile d.
CONSTRAIN d = {"valuesnum": [2,3,4]};
LET d = 1;
Risultati
Caricare i dati.
Il ricaricamento fallisce perché la variabile d viene valutata come 1, che non è nell'elenco dei tre valori possibili.
Al contrario, se si specifica 2 come valore di d, il ricaricamento verrà completato correttamente.
Esempio: valuestext
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per e deve essere uno dei seguenti valori testuali:
Department A
Department B
Department C
Un'istruzione SET che definisce la variabile e.
CONSTRAIN e = {"valuestext": ["Department A", "Department B", "Department C"]};
SET e = Department D;
Risultati
Caricare i dati.
Il ricaricamento fallisce perché la variabile e è Department D, che non è nell'elenco dei valori consentiti definiti dal vincolo.
Al contrario, se si specifica Department C come valore di e, il ricaricamento verrà completato correttamente.
Esempi: SET o LET
Questi esempi mostrano le differenze tra le modalità di applicazione dei vincoli quando si utilizza SET o LET durante la definizione delle variabili. Tutti gli esempi utilizzano vincoli che applicano un requisito type, ma questi principi si applicano a tutti i tipi di vincoli in generale.
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per f deve essere di tipo number.
Un'istruzione SET che definisce la variabile f.
Script di caricamento
CONSTRAIN f = {"type": "number"};
SET f = 500*2;
Risultati
Caricare i dati.
Il ricaricamento fallisce perché il vincolo richiede un tipo numerico per la variabile f. La definizione della variabile contiene un'espressione numerica, ma poiché viene utilizzata un'istruzione SET, la definizione viene valutata come testo.
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per g deve essere di tipo text.
Un'istruzione LET che definisce la variabile g.
Script di caricamento
CONSTRAIN g = {"type": "text"};
LET g = 500*2;
Caricare i dati.
Il ricaricamento fallisce perché il vincolo richiede un tipo di testo per la variabile g. La definizione della variabile contiene un'espressione numerica e viene utilizzata un'istruzione LET, che fa in modo che la definizione venga valutata come un numero.
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per h deve essere di tipo text.
Un'istruzione SET che definisce la variabile h.
Script di caricamento
CONSTRAIN h = {"type": "text"};
SET h = 500*2;
Caricare i dati.
Il ricaricamento viene completato correttamente. Il vincolo richiede un tipo testuale per la variabile h. La definizione della variabile contiene un'espressione numerica, ma poiché viene utilizzata un'istruzione SET, la definizione viene valutata come testo.
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per i deve essere di tipo number.
Un'istruzione LET che definisce la variabile i.
Script di caricamento
CONSTRAIN i = {"type": "number"};
LET i = 500*2;
Caricare i dati.
Il ricaricamento viene completato correttamente. Il vincolo richiede un tipo numerico per la variabile i. La definizione della variabile contiene un'espressione numerica e viene utilizzata un'istruzione LET, che fa in modo che la definizione venga valutata come un numero.
Esempi: vincoli multipli
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain per specificare che la definizione della variabile per j deve essere di compresa tra 1 e 5.
Il ricaricamento viene completato correttamente. La variabile f viene valutata come 2, un valore che rientra nell'intervallo accettabile.
Panoramica
Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.
Lo script di caricamento contiene:
Un'istruzione Constrain che permette alla variabile di essere testuale o numerica, purché sia uno dei valori accettabili.
Un'istruzione LET che definisce la variabile k.
Script di caricamento
CONSTRAIN k = {"valuestext": ["abc","def","ghi"], "valuesnum": [0,1,3,5]};
LET k = 'def';
Caricare i dati.
Il ricaricamento viene completato correttamente. Il valore della variabile k si trova nell'elenco dei valori accettabili. Allo stesso modo, se si specifica il valore 3 per k il ricaricamento verrebbe completato correttamente.
Esempio: risoluzione dei conflitti nelle definizioni delle variabili
Panoramica
Questo esempio mostra come possono verificarsi conflitti nella definizione delle variabili quando si aggiungono vincoli per una variabile che è già stata definita nell'app da un caricamento precedente.
Script di caricamento 1: impostazione della variabile di uno script
Aprire Editor caricamento dati. Aggiungere il seguente script:
LET vConflictExample = 'Department C';
Caricare i dati. Il ricaricamento viene completato correttamente. La variabile vConflictExample è stata creata nell'app come variabile dello script.
Script di caricamento 2: tentativo di assegnare una definizione del vincolo per una variabile dello script di caricamento precedente
Eliminare lo script di caricamento 1. Aggiungere il seguente script:
CONSTRAIN vConflictExample = {"type": "number"};
LET vConflictExample = 123;
Caricare i dati.
Il ricaricamento fallisce con un errore di vincolo, anche se il nuovo vincolo e la definizione del valore sono compatibili. Questo perché lo script di caricamento 1 ha già caricato la variabile nell'app, con un valore testuale, e questo valore è ancora presente nell'app. Per risolvere questo problema, è necessario reimpostare il vincolo e la definizione della variabile. Vedere lo script di caricamento 3.
Script di caricamento 3: reimpostazione delle definizioni di vincoli e valori
Eliminare lo script di caricamento 2. Aggiungere il seguente script:
Il ricaricamento viene completato correttamente. Lo script riportato sopra può essere suddiviso in tre parti, ciascuna separata da righe vuote:
La prima parte reimposta la definizione dei vincoli e dei valori per vConflictExample. Questa operazione rimuove la definizione che è stata caricata nell'app con lo script di caricamento 1.
La seconda parte riapplica le nuove definizioni di vincoli e valori che non hanno funzionato nello script di caricamento 2.
La terza parte aggiunge semplicemente dei dati finti, in modo da consentire di aprire la vista foglio e di controllare il valore della variabile (vedere sotto).
Aprire la vista foglio in modalità di modifica e aprire la finestra di dialogo Variabili. Ora è possibile vedere che la variabile vConflictExample è stata creata con successo.
La finestra di dialogo Variabili nella vista foglio mostra che il conflitto della definizione delle variabili per vConflictExample è stato risolto.
Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – ti pregiamo di farcelo sapere!