Uso
create_process: {
sql_step:
CREATE TABLE ${SQL_TABLE_NAME}
(customer_id int(11),
Hierarquia
create_process |
Valor padrão
NenhumaAceita
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.