create_process

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_process precisa 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.