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 na análise detalhada. O uso principal do 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. Por isso, o sql_preamble oferece essa funcionalidade.
Usar o Liquid no sql_preamble
O parâmetro sql_preamble é compatível com atributos do Liquid e do usuário, o que permite a geração dinâmica de SQL para casos de uso como definir variáveis de sessão, selecionar diferentes armazenamentos ou bancos de dados, implementar a remoçã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 compatíveis com o 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 compatíveis com o sql_preamble:
valuerendered_valuefilterable_valuelinklinked_value_field._name
Exemplos
Usar sql_preamble para especificar uma reserva do BigQuery
Especifique uma reserva do Google BigQuery para usar nas consultas do recurso Detalhar usando a instrução SQL SET @@reservation do BigQuery no parâmetro sql_preamble:
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
Como usar sql_preamble para adicionar uma mediana temporária
Crie uma função definida pelo usuário (UDF) no Google BigQuery que calcule uma mediana usando a instrução CREATE TEMP FUNCTION do Google BigQuery e insira a função de mediana no SQL do Google BigQuery antes de cada consulta na análise detalhada ser executada.
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 )
));
;;
}
Usar Liquid em sql_preamble para localizar o nome da tabela
Use o Liquid em sql_preamble para criar uma tabela temporária com um nome baseado no idioma selecionado pelo usuário. Assim, um único modelo da LookML pode se adaptar a diferentes convenções de nomenclatura internas:
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
Em vez de usar um nome codificado, como mytable, para a tabela temporária, esse código vai substituir a variável Liquid pela string real definida no arquivo de strings de localidade para a chave storage_table_name. Consulte Como usar a localidade em variáveis Liquid para mais informações.
A consulta do Looker que segue o preâmbulo faria referência a essa tabela nomeada dinamicamente. Por exemplo, a consulta SQL usaria FROM {{ _localization['storage_table_name'] }}.