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:
_filters['view_name.field_name']{% date_start date_filter_name %}{% date_end date_filter_name %}{% condition filter_name %} sql_or_lookml_reference {% endcondition %}{% if %} sql_or_lookml_reference {% else %} other_value {% endif %}{% parameter parameter_name %}parameter_name._parameter_value_user_attributes['name_of_attribute']_localization['localization_key']_model._name_explore._name_explore._dashboard_url_query._query_timezoneview_name._in_queryview_name.field_name._in_queryview_name.field_name._is_selectedview_name.field_name._is_filtered_view._name
Os seguintes padrões de uso do Liquid não são aceitos em sql_preamble:
valuerendered_valuefilterable_valuelinklinked_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'] }}.