Uso
derived_table: {
create_process: {
sql_step:
CREATE TABLE ${SQL_TABLE_NAME}
(customer_id int(11),
lifetime_orders int(11)) ;;
sql_step:
INSERT INTO ${SQL_TABLE_NAME}
(customer_id,
lifetime_orders)
SELECT customer_id, COUNT(*)
AS lifetime_orders
FROM order
GROUP BY customer_id ;;
}
}
|
Hierarquia
create_process |
Valor padrão
Nenhum
Aceita
Um ou mais subparâmetros sql_step
|
Definição
Se o dialeto do banco de dados usar comandos personalizados de linguagem de definição de dados (DDL), você poderá usar create_process para criar tabelas derivadas persistentes (PDTs). create_process define uma lista de instruções SQL que serão executadas na ordem listada. Cada instrução SQL individual é especificada usando o subparâmetro sql_step. Cada subparâmetro sql_step pode incluir qualquer consulta SQL válida. É possível definir vários subparâmetros sql_step, e eles serão executados um de cada vez, na ordem em que forem especificados. O Looker emite as instruções nos subparâmetros sql_step como estão, sem a correção de erros usual do Looker.
Por exemplo, alguns dialetos de banco de dados não oferecem suporte a CREATE TABLE as SELECT emitido como uma única instrução SQL. Eles exigem instruções SQL separadas. Como resultado, tabelas derivadas persistentes tradicionais baseadas em SQL não podem ser criadas nesses dialetos. O parâmetro create_process oferece uma maneira alternativa de criar PDTs, criando uma lista de instruções SQL separadas que são emitidas em sequência.
Você também pode usar create_process para oferecer suporte a dialetos, como os modelos de machine learning preditivo BigQuery ML do Google.
O parâmetro create_process indica que você está gravando as instruções CREATE completas para a tabela derivada, incluindo todos os índices. Para adicionar um índice a uma tabela derivada com create_process, use um parâmetro sql_step para especificar o SQL do índice.
Para PDTs definidas usando create_process, não é possível usar nenhum dos seguintes parâmetros:
Exemplo
Crie uma tabela derivada persistente ctasless_customer_order_facts em um banco de dados MySQL em duas etapas. Primeiro, emita a instrução SQL CREATE TABLE, definida pelo primeiro subparâmetro sql_step. Em segundo lugar, emita a instrução SQL INSERT INTO com uma instrução SELECT, definida pelo segundo subparâmetro sql_step:
view: ctasless_customer_order_facts {
derived_table: {
datagroup_trigger: some_datagroup
create_process: {
sql_step: CREATE TABLE ${SQL_TABLE_NAME} (
customer_id int(11),
lifetime_orders int(11)
) ;;
sql_step: INSERT INTO ${SQL_TABLE_NAME}(customer_id, lifetime_orders)
SELECT customer_id, COUNT(*) AS lifetime_orders
FROM order
GROUP BY customer_id ;;
}
}
}
Informações importantes
Operador de substituição ${SQL_TABLE_NAME}
Você pode usar o operador de substituição ${SQL_TABLE_NAME} para substituir o nome calculado da PDT que está sendo criada. Isso garante que a instrução SQL inclua corretamente o nome da PDT fornecido no parâmetro view do LookML.
create_processprecisa criar uma tabela com o nome indicado pelo operador de substituição${SQL_TABLE_NAME}, ou ela será recriada do zero em cada intervalo de verificação de gatilho especificado na configuração Programação de manutenção do grupo de dados e da PDT de uma conexão (o padrão é de cinco minutos). Isso pode causar tráfego de consulta inesperado no banco de dados ou data warehouse.
Use sql_create para criar uma PDT em uma etapa
Se o dialeto do banco de dados exigir comandos DDL personalizados e você quiser criar uma PDT em uma única etapa, use sql_create para definir uma instrução SQL CREATE completa para executar e criar uma PDT em uma única etapa.
As tabelas definidas com create_process não podem ser usadas para PDTs incrementais
Para ser usada como uma PDT incremental, uma PDT baseada em SQL precisa ter uma consulta definida usando o parâmetro sql. PDTs baseadas em SQL definidas com o sql_create parâmetro ou o create_process parâmetro não podem ser criadas incrementalmente.
Isso ocorre porque o Looker usa um comando INSERT ou MERGE para criar os incrementos de uma PDT incremental. A tabela derivada não pode ser definida usando instruções personalizadas de linguagem de definição de dados (DDL), porque o Looker não conseguiria determinar quais instruções DDL seriam necessárias para criar um incremento preciso.