Uso
create_process: {
sql_step:
Jerarquía
create_process |
Valor predeterminado
NingunaAcepta
Uno o más sql_step subparámetros
|
Definición
Si el dialecto de tu base de datos usa comandos personalizados del lenguaje de definición de datos (DDL), puedes usar create_process
para crear tablas derivadas persistentes (PDT). create_process
define una lista de instrucciones de SQL que se ejecutarán en el orden indicado. Cada instrucción de SQL individual se especifica con el subparámetro sql_step
. Cada subparámetro sql_step
puede incluir cualquier consulta de SQL legal. Puedes definir varios subparámetros de sql_step
y estos se ejecutarán de a uno, en el orden que se especifiquen. Looker emite las declaraciones de los subparámetros sql_step
tal como están, sin la corrección de errores habitual de Looker.
Por ejemplo, algunos dialectos de base de datos no admiten CREATE TABLE as SELECT
emitidos como una sola instrucción de SQL; requieren instrucciones de SQL independientes. Como resultado, las tablas derivadas persistentes basadas en SQL no se pueden crear en estos dialectos. El parámetro create_process
proporciona una forma alternativa de crear PDT mediante la creación de una lista de instrucciones de SQL separadas que se emiten en secuencia.
También puedes usar create_process
para admitir dialectos, como los modelos de aprendizaje automático predictivo de BigQuery ML de Google.
El parámetro create_process
indica que escribes las sentencias CREATE
completas para la tabla derivada, incluidos los índices. Si deseas agregar un índice para una tabla derivada con create_process
, usa un parámetro sql_step
a fin de especificar el SQL del índice.
Para los PDT definidos con
create_process
, no puedes usar ninguno de los siguientes parámetros:indexes
cluster_keys
distribution
distribution_style
partition_keys
sortkeys
Ejemplo
Crea una tabla derivada persistente ctasless_customer_order_facts
en una base de datos MySQL en dos pasos. Primero, emite la instrucción de SQL CREATE TABLE
, definida por el primer subparámetro sql_step
. En segundo lugar, emite la instrucción de SQL INSERT INTO
con una instrucción SELECT
, definida por el 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 ;;
}
}
}
Aspectos para tener en cuenta
Operador de sustitución de ${SQL_TABLE_NAME}
Puedes usar el operador de sustitución ${SQL_TABLE_NAME}
para reemplazar el nombre calculado del PDT que se crea. Esto garantiza que la instrucción de SQL incluya correctamente el nombre PDT proporcionado en el parámetro view
de LookML.
create_process
debe crear una tabla con el nombre que indica el operador de sustitución${SQL_TABLE_NAME}
, o se volverá a compilar desde cero en cada intervalo de verificación que se especifique en la configuración de PDT y Programa de mantenimiento de grupos de datos de la conexión (el valor predeterminado es de cinco minutos). Esto puede generar tráfico de consultas inesperado en tu base de datos o almacén de datos.
Usa sql_create
para crear un PDT en un solo paso.
Si el dialecto de tu base de datos requiere comandos de DDL personalizados y deseas crear un PDT en un solo paso, puedes usar sql_create
para definir una declaración SQL CREATE
completa a fin de ejecutar y crear un PDT en un solo paso.
Las tablas definidas con create_process
no se pueden usar para los PDT incrementales.
Para usarse como un PDT incremental, un PDT basado en SQL debe tener una consulta definida con el parámetro sql
. Los PDT basados en SQL que se definen con los parámetros sql_create
o create_process
no se pueden compilar de forma incremental.
Esto se debe a que Looker usa un comando INSERT o MERGE para crear los incrementos de un PDT incremental. La tabla derivada no se puede definir mediante declaraciones personalizadas del lenguaje de definición de datos (DDL), ya que Looker no podría determinar qué declaraciones DDL se requerirían para crear un incremento preciso.