sql_preamble

Utilizzo

explore: explore_name {
  sql_preamble: SQL STATEMENT  ;;
}
Gerarchia
sql_preamble
Valore predefinito
Nessuno
Accetta
Un'espressione SQL

Definizione

Il parametro sql_preamble specifica un'istruzione SQL che viene eseguita prima dell'esecuzione delle query in Esplora. L'utilizzo principale di sql_preamble è la creazione di funzioni definite dall'utente (UDF) in Google BigQuery. La maggior parte dei dialetti di database consente di installare le UDF direttamente sul server di database, ma Google BigQuery è senza stato, quindi sql_preamble fornisce questa funzionalità.

Utilizzo di Liquid in sql_preamble

Il parametro sql_preamble supporta Liquid e gli attributi utente, il che consente la generazione dinamica di SQL per casi d'uso come l'impostazione di variabili di sessione, la selezione di warehouse o database diversi, l'implementazione dell'eliminazione delle partizioni in BigQuery e il filtro flessibile dei dati interagendo più direttamente con il database sottostante.

I seguenti pattern di utilizzo di Liquid sono supportati nel parametro sql_preamble:

I seguenti pattern di utilizzo di Liquid non sono supportati in sql_preamble:

  • value
  • rendered_value
  • filterable_value
  • link
  • linked_value
  • _field._name

Esempi

Utilizzo di sql_preamble per aggiungere una mediana temporanea

Crea una funzione definita dall'utente (UDF) in Google BigQuery che calcola una mediana utilizzando l'istruzione CREATE TEMP FUNCTION di Google BigQuery e inserisce la funzione mediana in Google BigQuery SQL prima dell'esecuzione di ogni query in Esplora.

explore: salary {
  sql_preamble:
    CREATE TEMP FUNCTION MEDIAN(a_num ARRAY<FLOAT64>)
    RETURNS FLOAT64 AS ((
       SELECT
          AVG(num)
        FROM (
          SELECT
            row_number() OVER (ORDER BY num) -1 as rn
            , num
          FROM UNNEST(a_num) num
        )
        WHERE
          rn = TRUNC(ARRAY_LENGTH(a_num)/2)
            OR (
             MOD(ARRAY_LENGTH(a_num), 2) = 0 AND
              rn = TRUNC(ARRAY_LENGTH(a_num)/2)-1 )
    ));
  ;;
}

Utilizzo di Liquid in sql_preamble per localizzare il nome della tabella

Utilizza Liquid in sql_preamble per creare una tabella temporanea con un nome basato sulla lingua selezionata dall'utente, in modo che un singolo modello LookML possa adattarsi a diverse convenzioni di denominazione interne:

explore: orders {
  sql_preamble: 
    WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
  ...
}

Anziché utilizzare un nome hardcoded come mytable per la tabella temporanea, questo codice sostituirà la variabile Liquid con la stringa effettiva definita nel file di stringhe delle impostazioni internazionali per la chiave storage_table_name. Per ulteriori informazioni, consulta Utilizzo delle impostazioni internazionali nelle variabili Liquid.

La query Looker che segue il preambolo farà riferimento a questa tabella con nome dinamico. Ad esempio, la query SQL utilizzerà FROM {{ _localization['storage_table_name'] }}.