processo_de_criação

Uso

derivada da tabela: {
create_process: {
sql_step:
CREATE TABLE ${SQL_TABLE_NAME}
(customer_id int(11),

Hierarquia
create_process
Valor padrão
Nenhuma

Aceita
Um ou mais subparâmetros sql_step

Definição

Se o dialeto do banco de dados usar comandos de Linguagem de definição de dados (DDL, na sigla em inglês) personalizados, use create_process para criar tabelas derivadas permanentes (PDTs, na sigla em inglês). 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 legal. É possível definir vários subparâmetros sql_step. 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 erro usual do Looker.

Por exemplo, alguns dialetos de banco de dados não são compatíveis com CREATE TABLE as SELECT emitidos como uma única instrução SQL. Eles exigem instruções SQL separadas. Como resultado, não é possível criar tabelas derivadas permanentes persistentes com base em SQL nesses dialetos. O parâmetro create_process fornece uma maneira alternativa de criar PDTs, criando uma lista de instruções SQL separadas que são emitidas em sequência.

Também é possível usar create_process para oferecer suporte a dialetos, como os modelos de machine learning do BigQuery ML preditivo do Google.

O parâmetro create_process indica que você está escrevendo instruções CREATE completas para a tabela derivada, incluindo todos os índices. Para adicionar um índice para uma tabela derivada com create_process, use um parâmetro sql_step para especificar o SQL para o índice.

Para PDTs definidos usando create_process, não é possível usar nenhum dos parâmetros a seguir:

  • indexes
  • cluster_keys
  • distribution
  • distribution_style
  • partition_keys
  • sortkeys
  • Exemplo

    Crie uma tabela derivada permanente 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. Depois, 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 ;;
        }
      }
    }
    

    Considerações

    Operador de substituição ${SQL_TABLE_NAME}

    É possível usar o operador de substituição ${SQL_TABLE_NAME} para substituir o nome calculado do PDT que está sendo criado. Isso garante que a instrução SQL inclua corretamente o nome 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}. Caso contrário, ela será recriada do zero em cada intervalo de verificação de acionador especificado na configuração PDT e programação de manutenção do grupo de dados (o padrão é cinco minutos). Isso pode causar tráfego inesperado de consultas no banco de dados ou no data warehouse.

    Usar sql_create para criar um PDT em uma etapa

    Se o dialeto do banco de dados exigir comandos DDL personalizados e você quiser criar um PDT em uma única etapa, use sql_create para definir uma instrução SQL CREATE completa para executar e criar um PDT em uma única etapa.

    Tabelas definidas com create_process não podem ser usadas para PDTs incrementais

    Para ser usada como um PDT incremental, um PDT baseado em SQL precisa ter uma consulta definida usando o parâmetro sql. Os PDTs baseados em SQL definidos com o parâmetro sql_create ou create_process não podem ser criados de forma incremental.

    Isso ocorre porque o Looker usa um comando INSERT ou Merge para criar os incrementos de um PDT incremental. A tabela derivada não pode ser definida usando instruções de linguagem de definição de dados (DDL, na sigla em inglês) personalizada, já que o Looker não consegue determinar quais instruções DDL seriam necessárias para criar um incremento preciso.