sql_preamble

Uso

explore: explore_name {
  sql_preamble: SQL STATEMENT  ;;
}
Hierarquia
sql_preamble
Valor padrão
Nenhum
Aceita
Uma expressão SQL

Definição

O parâmetro sql_preamble especifica uma instrução SQL que é executada antes das consultas no Explore. O uso principal de sql_preamble é criar funções definidas pelo usuário (UDFs) no Google BigQuery. A maioria dos dialetos de banco de dados permite instalar UDFs diretamente no servidor de banco de dados, mas o Google BigQuery não tem estado. Portanto, sql_preamble oferece essa funcionalidade.

Como usar o Liquid em sql_preamble

O parâmetro sql_preamble oferece suporte a atributos de usuário e do Liquid, o que permite a geração dinâmica de SQL para casos de uso, como definir variáveis de sessão, selecionar diferentes data warehouses ou bancos de dados, implementar a eliminação de partições no BigQuery e permitir a filtragem flexível de dados interagindo com o banco de dados subjacente de forma mais direta.

Os seguintes padrões de uso do Liquid são aceitos no parâmetro sql_preamble:

Os seguintes padrões de uso do Liquid não são aceitos em sql_preamble:

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

Exemplos

Como usar sql_preamble para adicionar uma mediana temporária

Crie uma função definida pelo usuário (UDF) no Google BigQuery que calcula uma mediana usando a instrução CREATE TEMP FUNCTION do Google BigQuery e insere a função mediana no SQL do Google BigQuery antes de cada consulta no Explore.

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 )
    ));
  ;;
}

Como usar o Liquid em sql_preamble para localizar o nome da tabela

Use o Liquid em sql_preamble para criar uma tabela temporária nomeada com base no idioma selecionado pelo usuário. Assim, um único modelo LookML pode se adaptar a diferentes convenções de nomenclatura interna:

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

Em vez de usar um nome fixado no código, como mytable, para a tabela temporária, esse código vai substituir a variável líquida pela string real definida no arquivo de strings de localidade para a chave storage_table_name. Consulte Como usar a localidade em variáveis do Liquid para mais informações.

A consulta do Looker que segue o preâmbulo fará referência a essa tabela nomeada dinamicamente. Por exemplo, a consulta SQL usaria FROM {{ _localization['storage_table_name'] }}.