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 ;;
  }
}
Jerarquía
create_process
Valor predeterminado
Ninguno

Acepta
Uno o más parámetros secundarios de sql_step

Definición

Si tu dialecto de 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 parámetro secundario sql_step. Cada subparámetro sql_step puede incluir cualquier consulta en SQL válida. Puedes definir varios subparámetros sql_step, y se ejecutarán uno a la vez, en el orden en que se especifican. Looker emite las sentencias en los subparámetros sql_step tal como están, sin la corrección de errores habitual de Looker.

Por ejemplo, algunos dialectos de bases de datos no admiten CREATE TABLE as SELECT como una sola instrucción de SQL, sino que requieren instrucciones SQL separadas. Como resultado, no se pueden crear tablas derivadas persistentes basadas en SQL tradicionales en estos dialectos. El parámetro create_process proporciona una forma alternativa de crear PDT, ya que crea 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 estás escribiendo las sentencias CREATE completas para la tabla derivada, incluidos los índices. Para agregar un índice a una tabla derivada con create_process, usa un parámetro sql_step para 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 de 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 ${SQL_TABLE_NAME}

    Puedes usar el operador de sustitución ${SQL_TABLE_NAME} para sustituir el nombre calculado del PDT que se está creando. Esto garantiza que la instrucción de SQL incluya correctamente el nombre del PDT proporcionado en el parámetro view de LookML.

    create_process debe crear una tabla con el nombre indicado por el operador de sustitución ${SQL_TABLE_NAME}, o se volverá a compilar desde cero en cada intervalo de verificación del activador que se especifique en el parámetro de configuración Datagroup and PDT Maintenance Schedule de una conexión (el valor predeterminado es de cinco minutos). Esto puede provocar un 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 tu dialecto de base de datos requiere comandos DDL personalizados y deseas crear una PDT en un solo paso, puedes usar sql_create para definir una instrucción SQL CREATE completa que se ejecutará y creará una PDT en un solo paso.

    Las tablas definidas con create_process no se pueden usar para PDT incrementales.

    Para usarse como una PDT incremental, una PDT basada en SQL debe tener una consulta definida con el parámetro sql. Los PDT basados en SQL que se definen con el parámetro sql_create o el parámetro 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 una PDT incremental. La tabla derivada no se puede definir con 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.