Aggiunta di trasformazioni SQL | Guida di Qlik Cloud
Vai al contenuto principale Passa a contenuto complementare

Aggiunta di trasformazioni SQL

È possibile includere tabelle basate su SQL nelle attività di trasformazione. Una trasformazione SQL consente di inserire una query SELECT SQL in una pipeline per definire trasformazioni complesse o semplici. È possibile consentire a SQL assistant di generare una query da un prompt di testo utilizzando l'IA generativa. È inoltre possibile utilizzare le macro per adattare la query da eseguire se viene eseguito un caricamento iniziale o un caricamento incrementale.

Per ulteriori informazioni sulla creazione di un'attività di trasformazione, vedere Trasformazione dei dati.

Aggiunta di una trasformazione SQL

Per aggiungere una trasformazione SQL in un'attività dati Transform:

  1. In Transform, selezionare i set di dati da includere nella query e fare clic su Add SQL transformation.

    Impostare il nome della trasformazione in Name. Per ulteriori informazioni sulle altre impostazioni, vedere Impostazioni.

    Fare clic su Add quando si è pronti a creare la trasformazione SQL.

    Viene visualizzato Edit SQL transformation.

  2. Scrivere la query per restituire la tabella basata su SQL nel riquadro della query.

    Per ulteriori informazioni, vedere Modifica della query SQL.

  3. Fare clic su Run query.

    In questo modo verranno recuperati i metadati e un'anteprima dei dati.

  4. Rivedere i parametri in Parameters.

    Per ulteriori informazioni, vedere Parametri.

  5. Impostare una chiave primaria in Metadata.

    Per ulteriori informazioni, vedere Metadati.

  6. Quando si è soddisfatti dei risultati della query, fare clic su Save and close. Il set di dati viene ora aggiunto all'elenco delle destinazioni ed è possibile visualizzarne l'anteprima.

Modifica della query SQL

Digitare la query per restituire la tabella basata su SQL nel riquadro della query. La query può leggere solo dai set di dati di origine selezionati, ma è possibile aggiungere altri set di dati di origine con Add.

  • È possibile creare un'istruzione per caricare un set di dati da Objects. Fare clic su altro e quindi su Generate select statement in editor.

  • È possibile copiare il nome di un set di dati negli appunti facendo clic su altro e quindi su Copy.

  • Fare clic su > per spostare il nome di un set di dati o di una colonna nell'editor.

  • Fare clic su Cerca per cercare e sostituire il testo nell'editor.

Nota informaticaÈ possibile utilizzare SQL assistant per generare una query utilizzando l'IA generativa. Per ulteriori informazioni, vedere Generazione di una trasformazione SQL da un prompt di testo. SQL assistant non è disponibile in Qlik Cloud Government.

Se si utilizza il caricamento incrementale, è possibile utilizzare Macros per adattare la query da eseguire se viene eseguito un caricamento iniziale o un caricamento incrementale.

Per ulteriori informazioni, vedere Utilizzo delle macro per adattare la query al tipo di caricamento.

Scorciatoie da tastiera

Nota informaticaLe scorciatoie da tastiera sono espresse presupponendo che si stia lavorando in Windows. Per macOS, utilizzare Command invece di Ctrl.
  • Ctrl+F Cerca e sostituisci

  • Ctrl+/ Commenta/rimuovi commento dalla riga corrente

  • Ctrl+Invio Esegui la query

  • Ctrl+Z Annulla

  • Ctrl+Y Ripristina

Anteprima dei risultati

È possibile visualizzare in anteprima i risultati utilizzando un campione dei dati in Results.

Nota informaticaL'anteprima dei dati deve essere abilitata a livello di tenant in Amministrazione. È possibile trovare l'opzione Viewing data in Integrazione dati in Settings, sotto Feature control.

Per poter visualizzare l'anteprima dei dati, è necessario che siano assegnati i seguenti ruoli:

  • Can view data nello spazio in cui risiede la connessione.

  • Can view nello spazio in cui risiede il progetto.

Vengono visualizzati i risultati che utilizzano un campione dei dati. È possibile impostare il numero di righe di dati da includere nel campione con Number of rows.

  • Fare clic su Last executed query per visualizzare l'ora dell'ultima esecuzione e la durata dell'ultima query eseguita.

Filtraggio dei risultati

È possibile filtrare i risultati in base a una o più colonne.

  • Fare clic su altro sulla prima colonna in base a cui filtrare e quindi su Filter.

    Selezionare l'operatore da utilizzare e il valore in base a cui filtrare.

    È possibile aggiungere altri filtri di colonna facendo clic su Add filter.

Il filtro influirà solo sui dati campione esistenti.

Ordinamento dei risultati

È possibile ordinare il campione di dati in base a una colonna specifica.

  • Fare clic su altro sulla colonna in base a cui ordinare e quindi su Sort ascending o Sort descending.

L'ordinamento influirà solo sui dati campione esistenti. Se si è utilizzato un filtro per includere solo gli ordini del 2024 e si inverte l'ordine di ordinamento, i dati campione conterranno comunque solo gli ordini del 2024.

Gestione delle colonne visualizzate

È possibile selezionare quali colonne visualizzare nei risultati. La selezione non viene salvata quando si salva la trasformazione.

  • Nascondere una colonna facendo clic su altro sulla colonna e quindi su Hide column.

  • Gestire la visualizzazione di tutte le colonne facendo clic su altro su qualsiasi colonna e quindi su Displayed columns.

Parametri

Fare clic su Parameters per modificare i parametri nella query SELECT. I parametri devono essere mappati agli oggetti di origine o di destinazione.

I parametri vengono mappati automaticamente quando si:

  • Utilizza Generate select statement in editor in Objects.

  • Fai clic su > per spostare il nome di un set di dati o di una colonna nell'editor.

  • Il nome di un parametro corrisponde al nome di una tabella tra le tabelle in Objects.

Nota informaticaSe si utilizzano nomi di parametri arbitrari, è necessario mappare i parametri manualmente. Solo i nomi dei parametri che corrispondono ai nomi dei set di dati verranno mappati automaticamente.

È possibile mappare su

  • Strutture di cronologia di tipo 2 (_history)

  • Strutture correnti

  • Oggetti di destinazione

    È possibile mappare gli oggetti di destinazione solo quando un parametro è definito all'interno di una macro incrementale.

Nota di suggerimentoÈ possibile sostituire un parametro con un riferimento per avere una query più facile da leggere. Modificando il valore in Parameter, cambierà anche il riferimento in SELECT query.

Metadati

È possibile modificare le impostazioni dei metadati in Metadata.

  • Impostare le chiavi primarie nella colonna Key.

    È possibile ottenere suggerimenti per chiavi primarie idonee e convalidare le chiavi facendo clic su Suggest and validate keys.

  • Impostare se la colonna ammette valori nulli nella colonna Nullable.

  • Selezionare una colonna e fare clic su Edit per impostare il nome della colonna, la chiave, l'ammissibilità di valori nulli e il tipo di dati.

Suggerimento e convalida delle chiavi

È possibile ottenere suggerimenti per chiavi primarie idonee e convalidare le chiavi facendo clic su Suggest and validate keys. La query SQL completa deve essere stata eseguita almeno una volta.

  • GenAI viene utilizzata per suggerire le chiavi se si è scelto di attivare l'inferenza tra aree geografiche diverse. Ciò consente a Qlik Cloud di inviare richieste di inferenza al di fuori dell'area geografica del proprio tenant. Per i dettagli e le informazioni più recenti sulle posizioni di elaborazione dell'inferenza, vedere Attivazione dell'inferenza in più regioni.

    Nota informaticaQlik non controlla l'output generato. A causa della natura di GenAI, le risposte potrebbero non produrre codice SQL che soddisfi i requisiti dell'utente senza una revisione o una modifica. La query generata è considerata “Contenuto” ai sensi dei termini del Contratto con il cliente Qlik.
    Nota su Qlik Cloud Government

    Il suggerimento delle chiavi assistito da GenAI non è disponibile in Qlik Cloud Government.

    Se GenAI non è abilitata, le chiavi verranno suggerite a livello di programmazione in base ai dati della tabella di origine.

  • La convalida verrà sempre eseguita senza utilizzare GenAI eseguendo una query SQL per assicurarsi che non vi siano duplicati o valori NULL.

    Nota informaticaLa convalida è disponibile solo quando la query ha restituito dati.
  • Suggest and validate keys

    In questo modo verranno esaminate la query e le chiavi della tabella di origine e verranno suggerite chiavi primarie valide. Questa operazione potrebbe richiedere del tempo.

  • Validate keys

    In questo modo verranno convalidate le chiavi primarie esistenti per garantire che siano univoche e non NULL. Questa operazione potrebbe richiedere del tempo.

  • Suggest without validation

    In questo modo verranno esaminate la query e le chiavi della tabella di origine e verranno suggerite chiavi primarie senza convalida. Rivedere e convalidare le chiavi manualmente prima di applicarle.

Esecuzione della query

È possibile eseguire la query in qualsiasi momento durante lo sviluppo facendo clic su Run query. La prima volta che si esegue una query, verranno recuperati i metadati. Una volta eseguita la query, è possibile andare su Metadata e impostare una chiave primaria, necessaria per il completamento della trasformazione.

Nota informaticaSe l'editor contiene più di una query, è possibile eseguire una singola query selezionandola e facendo clic su Run query.

Utilizzo delle macro per adattare la query al tipo di caricamento

Se si utilizza il caricamento incrementale, è possibile utilizzare Macros per adattare la query da eseguire se viene eseguito un caricamento iniziale o un caricamento incrementale.

Selezionare la macro e aggiungere la query all'interno della rispettiva clausola.

  • Q_RUN_INCREMENTAL aggiunge una clausola in cui è possibile inserire una query che viene eseguita solo quando viene eseguito un caricamento incrementale.

  • Q_RUN_INITIAL_LOAD aggiunge una clausola in cui è possibile inserire una query che viene eseguita solo quando viene eseguito un caricamento iniziale.

Non è necessario specificare la query completa con ciascuna macro. È possibile regolare o aggiungere codice in base al proprio caso d'uso.

Caso d'uso: filtro incrementale che utilizza un intervallo di date:

In questo caso d'uso, un insieme di dati sugli ordini deve essere trasformato con SQL personalizzato. Poiché si tratta di un set di dati di grandi dimensioni, si desidera includere il filtraggio incrementale per garantire che il caricamento incrementale consideri solo gli ordini delle ultime 12 ore.

Questa è la query di base:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Questo è il filtro da applicare durante l'esecuzione incrementale, in cui si considerano solo gli ordini aggiunti nelle ultime 12 ore:

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
Nota di suggerimentoQuando si implementa una tabella basata su SQL, si consiglia di sostituire i nomi delle tabelle con la notazione ${TABLE}. Ciò evita di codificare a livello hardware i nomi di database e schemi che potrebbero cambiare da un ambiente all'altro, ad esempio quando si passa dallo sviluppo alla produzione.

Questa è la query completa, che utilizza la macro di filtro e con i nomi delle tabelle sostituiti con la notazione ${TABLE}:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() ) {{/QLIK_FUNC_IF}}

Ciò si traduce in una query di caricamento iniziale:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

E in una query di caricamento incrementale:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() )

Caso d'uso: filtro incrementale che utilizza i dati nella destinazione :

In questo caso d'uso, un insieme di dati sugli ordini deve essere trasformato con SQL personalizzato. Poiché gli ordini costituiscono un set di dati di grandi dimensioni, si desidera includere il filtraggio incrementale per garantire che il caricamento incrementale consideri solo i record dei dettagli dell'ordine più recenti rispetto ai dati nella tabella di destinazione. Si desidera inoltre contrassegnare se una riga è stata elaborata dal caricamento iniziale o da un caricamento incrementale.

Nota informaticaCome si può vedere da questo esempio, le macro possono essere utilizzate per regolare qualsiasi parte della query per il caricamento iniziale o il caricamento incrementale.

Questa è la query di base:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Questo è il filtro da applicare durante l'esecuzione incrementale. “ORDERS_DERIVED” è il nome del set di dati di destinazione.

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”.”myTrasformTask”.”ORDERS_DERIVED” )
Nota di suggerimentoIl caricamento incrementale può anche mappare una notazione ${TABLE} sugli oggetti di destinazione creati dall'attività di trasformazione.

Questa è la query completa, che utilizza la macro di filtro e con i nomi delle tabelle sostituiti con la notazione ${TABLE}. LOADED_BY è impostato su INIT se il caricamento è iniziale, e su INCR se il caricamento è incrementale:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, {{#QLIK_FUNC_IF Q_RUN_INITIAL_LOAD}} ‘INIT’ as LOADED_BY {{/QLIK_FUNC_IF}} {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} ‘INCR’ as LOADED_BY {{/QLIK_FUNC_IF}} FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} ) {{/QLIK_FUNC_IF}}

Ciò si traduce in una query di caricamento iniziale:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INIT’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

E in una query di caricamento incrementale:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INCR’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} )

Impostazioni

Fare clic su Impostazioni per modificare le impostazioni della trasformazione SQL.

  • Immettere un nome per il set di dati di destinazione in Nome.

    È anche possibile aggiungere una descrizione più lunga in Descrizione.

  • In Materializzazione, selezionare se l'output trasformato dovrebbe essere materializzato o meno. È possibile scegliere di ereditare l'impostazione dalle impostazioni delle attività dati.

    • L'opzione Attivo creerà le tabelle e gestirà l'elaborazione ELT associato.

    • L'opzione Disattivato creerà visualizzazioni che eseguono trasformazioni al volo.

  • In Archivio dati cronologico (Tipo 2), selezionare se si desidera conservare i dati cronologici. È possibile scegliere di ereditare l'impostazione dalle impostazioni delle attività dati. Questa impostazione richiede che la Materializzazione sia attiva.

  • Caricamento incrementale consente di regolare la query per un caricamento di dati incrementali applicando filtri o altre condizioni per ridurre il set di dati elaborato tramite macro. Caricamento incrementale è disponibile solo se i dati sono materializzati come tabelle.

    • Quando Caricamento incrementale è Attivato

      La prima esecuzione dell'attività eseguirà un caricamento iniziale, inserendo tutti i risultati della query nella propria tabella di destinazione. Le esecuzioni successive eseguiranno caricamenti incrementali sfruttando filtri o condizioni specifiche che l'utente ha definito per l'elaborazione incrementale. Durante il caricamento incrementale, l'attività elaborerà dati solo sotto forma di aggiornamento o inserimento, le eliminazioni non sono gestite.

    • Quando Caricamento incrementale è Disattivato

      La prima esecuzione dell'attività eseguirà un caricamento iniziale, inserendo tutti i risultati della query nella propria tabella di destinazione. Le esecuzioni successive elaboreranno tutti i risultati della query tramite la comparazione con la tabella di destinazione e l'elaborazione di record nuovi, modificati o eliminati.

    Nota informaticaSe la query selezionerà tutti i record che devono essere presenti nella destinazione, impostare il Caricamento incrementale su Disattivato. I record che non sono selezionati saranno eliminati nella destinazione.
  • Best practice

    • Quando si aggiunge una trasformazione SQL, non viene definita automaticamente una chiave primaria. Aggiungere una chiave al set di dati nella scheda Dataset.

    • Non creare manualmente le intestazioni di colonna nell'output trasformato.

    • Evitare di utilizzare SELECT con *, in quanto ciò potrebbe restituire colonne diverse a ogni esecuzione della query. Se si è verificata una modifica nello schema, modificare la query di conseguenza ed eseguire nuovamente Describe table. Sarà quindi possibile modificare le colonne e regolare le tabelle.

    Hai trovato utile questa pagina?

    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!