SQL (per tabelle derivate)

Questa pagina si riferisce al parametro sql che fa parte di una tabella derivata.

Puoi anche utilizzare sql come parte di un campo, come descritto nella pagina della documentazione relativa al parametro sql (per i campi).

Utilizzo

view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ("'test', 'staff') ;;

Gerarchia
sql
Valore predefinito
Nessuna

Accetta
Un blocco SQL

Definizione

sql consente di specificare il codice SQL che verrà utilizzato per generare una tabella derivata. Puoi utilizzare qualsiasi query SQL legale nel parametro sql, purché la query SQL sia scritta in SQL non elaborato e non faccia riferimento ai campi di Looker. Per una comprensione più completa delle tabelle derivate, consulta la pagina della documentazione Tabelle derivate in Looker.

Oltre a fare riferimento alle normali tabelle di database, puoi anche fare riferimento alle viste LookML o alle tabelle derivate in sql. Per farlo, utilizza:

${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name

Il SQL_TABLE_NAME in questo riferimento è una stringa letterale; non è necessario sostituirlo con nulla. Ad esempio, se vuoi fare riferimento a una tabella derivata denominata key_customer nella tabella derivata key_customer_order_facts, potresti avere il seguente formato:

view: key_customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      INNER JOIN
        ${key_customer.SQL_TABLE_NAME} AS key_customer
      ON
        order.customer_id = key_customer.id
      GROUP BY 1
      ;;
  }
}

Variabili a liquido con sql

Puoi anche utilizzare le variabili Liquid con il parametro sql. Le variabili Liquid consentono di accedere a dati come i valori in un campo, i dati sul campo e i filtri applicati al campo.

Le variabili Liquid di date_start e date_end sono molto utili per i dialetti di database che condividono i dati in più tabelle in base alla data, come BigQuery. Consulta questo articolo del Centro assistenza per una spiegazione approfondita.

In particolare, le variabili Liquid _in_query, _is_selected e _is_filtered possono aggiungere alcune funzionalità interessanti alle tabelle derivate. Restituisce true o false a seconda che un campo o un filtro sia stato incluso in una query. Ci sono alcune complessità che dovrebbero essere considerate per l'utilizzo corretto di questi valori vero/falso. Per ulteriori informazioni, consulta la pagina della variabile Liquid.

Ad esempio, questa tabella derivata modifica la tabella del database su cui viene eseguita la query in base ai campi selezionati dall'utente:

view: dynamic_order_counts {
  derived_table: {
    sql:
      SELECT
        period, number_of_orders
      FROM
        {% dynamic if dates.reporting_date._in_query %}
          daily_orders
        {% elsif dates.reporting_week._in_query %}
          weekly_orders
        {% dynamic else %}
          monthly_orders
        {% dynamic endif %}
      GROUP BY 1
      ;;
  }
}

Esempi

Crea una tabella derivata da customer_order_facts:

view: customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      GROUP BY 1
      ;;
  }
}

Aspetti da considerare

Le tabelle a cui si fa riferimento in sql devono essere accessibili dalla connessione attuale

views che contengono una tabella derivata viene fatto riferimento a un parametro explore o join, che a sua volta fa riferimento a un modello. Il modello determina quale connessione al database viene utilizzata (consulta la pagina della documentazione del parametro connection). Le connessioni ai database sono definite nella sezione Admin (Amministrazione) di Looker. Quando fai riferimento a una tabella nel parametro sql, la tabella deve essere accessibile all'interno della connessione associata.

Utilizza codice SQL non elaborato con sql, non riferimenti ai campi di Looker

L'SQL che scrivi in un parametro della tabella sql derivata deve essere un codice SQL non elaborato, che fa riferimento alle colonne e alle tabelle sottostanti del tuo database. Non deve fare riferimento a nomi di campi o nomi di viste Looker.

L'utilizzo di _filters['view_name.field_name'] in una tabella derivata richiede sql_quote

Quando definisci una tabella derivata basata su SQL, se utilizzi la variabile Liquid _filters['view_name.field_name'] in cui il valore viene visualizzato in SQL e il filtro restituisce un valore stringa, devi aggiungere le virgolette singole attorno all'output. Per farlo, includi il filtro Liquido sql_quote.

In caso contrario, riceverai il seguente avviso LookML se non aggiungi la variabile Liquid con | sql_quote:

Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.

Per ulteriori informazioni, consulta la pagina Riferimento alle variabili per liquidi.