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 da linguagem de definição de dados (DDL), use create_process para criar tabelas derivadas permanentes (PDTs). create_process define uma lista de instruções SQL que serão executadas na ordem em que aparecem. 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, que serão executados um de cada vez, na ordem em que são 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 aceitam CREATE TABLE as SELECT emitido como uma única instrução SQL. Eles exigem instruções SQL separadas. Como resultado, não é possível criar tabelas derivadas persistentes baseadas em SQL tradicionais 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 preditivos do BigQuery ML do Google.
O parâmetro create_process indica que você está escrevendo 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:indexescluster_keysdistributiondistribution_stylepartition_keyssortkeys
Exemplo
Crie uma ctasless_customer_order_facts tabela derivada persistente em um banco de dados MySQL em duas etapas. Primeiro, execute a instrução SQL CREATE TABLE, definida pelo primeiro subparâmetro sql_step. Em seguida, execute 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 da LookML.
O
create_processprecisa criar uma tabela com o nome indicado pelo operador de substituição${SQL_TABLE_NAME}. Caso contrário, ela será recriada do zero em todos os intervalos de verificação de acionamento especificados na configuração Grupo de dados e programação de manutenção de PDT de uma conexão. O padrão é de cinco minutos. Isso pode causar um tráfego de consultas inesperado no seu banco de dados ou data warehouse.
Use sql_create para criar uma PDT em uma etapa
Se o dialeto do seu 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 a ser executada e criar uma PDT em uma única etapa.
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 parâmetro sql_create ou create_process não podem ser criadas de forma incremental.
Isso acontece 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.