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 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:

  • indexes
  • cluster_keys
  • distribution
  • distribution_style
  • partition_keys
  • sortkeys
  • 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_process precisa 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.