Uso
max_cache_age: "24 horas"
sql_trigger: SELECT max(id) FROM my_tablename ;;
interval_trigger: "12 horas"
label: """"""
Jerarquía
datagroup |
Valor predeterminado
NingunaAcepta
Un identificador para tu grupo de datos, además de subparámetros que definen tus propiedades.
|
Definición
Usa datagroup
para asignar una política de almacenamiento en caché a exploraciones o tablas derivadas persistentes (PDT). Si quieres diferentes políticas de almacenamiento en caché para diferentes exploraciones o PDT, usa un parámetro datagroup
separado a fin de especificar cada política.
Puedes agregar una etiqueta y una descripción para el grupo de datos:
label
: Especifica una etiqueta opcional para el grupo de datos. Para obtener más información, consulta las seccioneslabel
ydescription
en esta página.description
: Especifica una descripción opcional del grupo de datos que se puede usar para explicar el propósito y el mecanismo del grupo de datos. Para obtener más información, consulta las seccioneslabel
ydescription
en esta página.
Especifica los detalles de la política de almacenamiento en caché mediante los subparámetros datagroup
:
max_cache_age
: Especifica una string que define un período. Cuando la antigüedad de la caché de una consulta supera el período, Looker invalida la caché. La próxima vez que se emita la consulta, Looker la enviará a la base de datos para obtener resultados actualizados. Consulta la secciónmax_cache_age
en esta página para obtener más información.sql_trigger
: Especifica una consulta de SQL que muestra una fila con una columna. Si el valor que muestra la consulta es diferente de los resultados anteriores de la consulta, el grupo de datos pasa a un estado activado. Consulta la secciónsql_trigger
en esta página para obtener más información.interval_trigger
: Especifica un programa para activar el grupo de datos, como"24 hours"
. Consulta la seccióninterval_trigger
en esta página para obtener más información.
A menudo, la mejor solución es usar max_cache_age
en combinación con sql_trigger
o interval_trigger
. Especifica un valor sql_trigger
o interval_trigger
que coincida con la carga de datos (ETL) en tu base de datos. Luego, especifica un valor max_cache_age
que invalidará los datos antiguos si tu ETL falla. El parámetro max_cache_age
garantiza que, si sql_trigger
o interval_trigger
no borran la caché de un grupo de datos, las entradas de caché vencerán en un momento determinado. De esa manera, el modo de falla de un grupo de datos será consultar la base de datos en lugar de entregar datos inactivos de la caché de Looker.
Un grupo de datos no puede tener los parámetros
sql_trigger
yinterval_trigger
. Si defines un grupo de datos con ambos parámetros, este usará el valorinterval_trigger
y omitirá el valorsql_trigger
, ya que el parámetrosql_trigger
requiere el uso de recursos de base de datos para consultar la base de datos.En el caso de las conexiones que usan atributos de usuario para especificar los parámetros de conexión, debes crear una conexión independiente mediante los campos de anulación de PDT si quieres definir una política de almacenamiento en caché de grupos de datos mediante un activador de consultas de SQL.
Sin las anulaciones de PDT, puedes usar un grupo de datos para el modelo y sus exploraciones, siempre que definas la política de almacenamiento en caché del grupo de datos con solomax_cache_age
, no consql_trigger
.
max_cache_age
El parámetro max_cache_age
especifica una string que contiene un número entero seguido de “segundos”, “minutos” o “horas”. Este es el período máximo para que los resultados almacenados en caché se usen en las consultas de Explorar que usan el grupo de datos.
Cuando la antigüedad de la caché de una consulta supera el max_cache_age
, Looker invalida la caché. La próxima vez que se emita la consulta, Looker la enviará a la base de datos para obtener resultados actualizados.
Cuando la antigüedad de la caché de una consulta supera el max_cache_age
, Looker invalida la caché. La próxima vez que se emita la consulta, Looker la enviará a la base de datos para obtener resultados actualizados. Consulta la página de documentación Consultas en caché y vuelve a compilar los PDT con grupos de datos para obtener información sobre cuánto tiempo se almacenan los datos en la caché.
Si la función Paneles instantáneos Looker Labs está habilitada, las consultas que se ejecutan desde un panel siempre se ejecutarán en la base de datos. Los datos de las ejecuciones anteriores se mostrarán en el panel hasta que se muestren los resultados de la consulta, independientemente del valor max_cache_age
.
El parámetro max_cache_age
solo define cuándo se invalida la caché. No activa la recompilación de PDT. Si defines un grupo de datos solo con max_cache_age
, recibirás una advertencia de validación de LookML si se asignan tablas derivadas al grupo de datos. Si dejas una tabla derivada asignada a un grupo de datos con solo un parámetro max_cache_age
, la tabla derivada se compilará cuando se consulte por primera vez, pero la tabla derivada se ubicará en el esquema desde cero de manera indefinida y nunca se volverá a compilar, incluso si se vuelve a consultar. Si deseas que una PDT se vuelva a compilar en un intervalo de tiempo específico, debes agregar un parámetro interval_trigger
a tu grupo de datos para definir una programación de recompilación de PDT.
sql_trigger
Usa el parámetro sql_trigger
para especificar una consulta de SQL que muestra exactamente una fila con una columna. Looker ejecuta la consulta de SQL a intervalos especificados en el campo PDT y Programa de mantenimiento de grupos de datos de la conexión de la base de datos. Si la consulta muestra un valor diferente al del resultado anterior, el grupo de datos pasa a un estado activado. Una vez que se activa el grupo de datos, Looker vuelve a compilar todos los PDT con ese grupo de datos especificado en su parámetro datagroup_trigger
. Una vez que se completa la recompilación del PDT, el grupo de datos pasa a estar listo, y Looker invalida los resultados almacenados en caché de las exploraciones que usan ese grupo de datos.
Por lo general, sql_trigger
especifica una consulta de SQL que indica cuándo se produjo una carga de datos (ETL) nueva, por ejemplo, mediante una consulta al max(ID)
en una tabla. También puedes usar sql_trigger
para especificar una hora del día determinada si consultas la fecha actual y agregas horas adicionales a esa marca de tiempo según sea necesario para alcanzar la hora que deseas, por ejemplo, 4 a.m.
Looker no realiza una conversión de zona horaria para
sql_trigger
. Si desea activar su grupo de datos a una hora específica del día, configure el activador en la zona horaria para la que está configurada su base de datos.
Consulta estos ejemplos del parámetro sql_trigger
a fin de obtener ideas para configurar consultas de SQL a fin de activar un grupo de datos.
interval_trigger
Puedes usar el subparámetro opcional interval_trigger
a fin de especificar un período para la recompilación. En el parámetro interval_trigger
, debes pasar una string que contiene un número entero seguido de "segundos", "minutos" o "horas".
label
y description
Puedes usar los subparámetros opcionales label
y description
para agregar una etiqueta personalizada y una descripción del grupo de datos. También puede localizar estos subparámetros mediante archivos de strings de configuración regional.
Estos subparámetros se muestran en la página Grupos de datos en la sección Base de datos del panel Administrador. Consulte la página de documentación Configuración del administrador: grupos de datos para obtener más información sobre cómo se muestran estos elementos.
Ejemplos
En los siguientes ejemplos, se destacan los casos de uso de datagroup
, incluidos los siguientes:
- Crea una política de almacenamiento en caché para recuperar resultados nuevos
- Crea un grupo de datos para programar entregas el último día de cada mes
- Usa un grupo de datos con PDT en cascada
- Comparte grupos de datos entre archivos de modelos
Crear una política de almacenamiento en caché para recuperar resultados nuevos cuando haya datos nuevos disponibles o al menos cada 24 horas
Para crear una política de almacenamiento en caché que recupere resultados nuevos cuando haya datos nuevos disponibles o al menos cada 24 horas, haz lo siguiente:
- Usa el grupo de datos
orders_datagroup
(en el archivo de modelo) para nombrar la política de almacenamiento en caché. - Usa el parámetro
sql_trigger
para especificar la consulta que indica que hay datos actualizados:select max(id) from my_tablename
. Cada vez que se actualizan los datos, esta consulta muestra un número nuevo. - Usa la configuración
max_cache_age
para invalidar los datos si se almacenaron en caché durante 24 horas. - Usa los parámetros opcionales
label
ydescription
para agregar una etiqueta personalizada y una descripción del grupo de datos.
datagroup: orders_datagroup {
sql_trigger: SELECT max(id) FROM my_tablename ;;
max_cache_age: "24 hours"
label: "ETL ID added"
description: "Triggered when new ID is added to ETL log"
}
A fin de usar la política de almacenamiento en caché orders_datagroup
como la configuración predeterminada para Explorar en un modelo, usa el parámetro persist_with
a nivel de modelo y especifica el orders_datagroup
:
persist_with: orders_datagroup
Para usar la política de almacenamiento en caché orders_datagroup
en una exploración específica, agrega el parámetro persist_with
en el parámetro explore
y especifica el orders_datagroup
. Si se especifica un grupo de datos predeterminado a nivel del modelo, puedes usar el parámetro persist_with
en un explore
para anular la configuración predeterminada.
explore: customer_facts {
persist_with: orders_datagroup
...
}
Si deseas usar la política de almacenamiento en caché orders_datagroup
del grupo de datos para volver a compilar un PDT, puedes agregar datagroup_trigger
en el parámetro derived_table
y especificar la orders_datagroup
:
view: customer_order_facts {
derived_table: {
datagroup_trigger: orders_datagroup
...
}
}
Crear un grupo de datos para programar entregas el último día de cada mes
Es posible que quieras crear una programación que envíe una publicación de contenido al final de cada mes. Sin embargo, no todos los meses tienen la misma cantidad de días. Puede crear un grupo de datos para activar la publicación de contenido al final de cada mes, independientemente de la cantidad de días en un mes específico.
- Cree un grupo de datos con una instrucción de SQL para que se active al final de cada mes:
datagroup: month_end_datagroup {
sql_trigger: SELECT (EXTRACT(MONTH FROM DATEADD( day, 1, GETDATE()))) ;;
description: "Triggered on the last day of each month"
}
Este ejemplo se encuentra en Redshift SQL y puede requerir ligeras adaptaciones para diferentes bases de datos.
Esta instrucción de SQL muestra el mes en el que se encuentra mañana (el último día del mes, mañana es el mes siguiente), por lo que se activará el grupo de datos. Como ocurre cada dos días, mañana es el mismo mes, por lo que no se activa el grupo de datos.
- Selecciona el grupo de datos en un programa nuevo o existente.
Las programaciones basadas en grupos de datos se envían solo después de que se completa el proceso de regeneración para todos los PDT que persisten con ese parámetro de grupo de datos, lo que garantiza que tu publicación incluya los datos más recientes.
Usar un grupo de datos con PDT en cascada
En el caso de las tablas derivadas en cascada persistentes, en las que se hace referencia a una tabla derivada persistente (PDT) en la definición de otra, puedes usar un grupo de datos a fin de especificar una estrategia de persistencia para la cadena de PDT en cascada.
Por ejemplo, aquí hay una parte de un archivo de modelo que define un grupo de datos llamado user_facts_etl
y una exploración llamada user_stuff
. La exploración de user_stuff
persiste con el grupo de datos user_facts_etl
:
datagroup: user_facts_etl {
sql_trigger: SELECT max(ID) FROM etl_jobs ;;
}
explore: user_stuff {
persist_with: user_facts_etl
from: user_facts_pdt_1
join: user_facts_pdt_2 {
...
}
...
}
La exploración user_stuff
une la vista user_facts_pdt_1
con la vista user_facts_pdt_2
. Ambas vistas se basan en PDT que usan el grupo de datos user_facts_etl
como activador de persistencia. La tabla derivada user_facts_pdt_2
hace referencia a la tabla derivada user_facts_pdt_1
, por lo que son PDT en cascada. A continuación, se muestra un ejemplo de LookML de los archivos de vista de estos PDT:
view: user_facts_pdt_1 {
derived_table: {
datagroup_trigger: user_facts_etl
explore_source: users {
column: customer_ID {field:users.id}
column: city {field:users.city}
...
}
}
}
view: user_facts_pdt_2 {
derived_table: {
sql:
SELECT ...
FROM ${users_facts_pdt_1.SQL_TABLE_NAME} ;;
datagroup_trigger: user_facts_etl
}
}
Si tiene PDT en cascada, debe asegurarse de que no tengan políticas de almacenamiento en caché de grupos de datos incompatibles.
El regenerador de Looker verifica el estado y, luego, inicia las recompilaciones de estos PDT de la siguiente manera:
- De forma predeterminada, el regenerador de Looker verifica la consulta de
sql_trigger
del grupo de datos cada cinco minutos (tu administrador de Looker puede especificar este intervalo mediante la configuración de PDT y Programa de mantenimiento de grupos de datos en tu conexión a la base de datos). - Si el valor que muestra la consulta
sql_trigger
es diferente del resultado de la consulta en la verificación anterior, el grupo de datos pasa al estado activado. En este ejemplo, si la tablaetl_jobs
tiene un valorID
nuevo, se activa el grupo de datosuser_facts_etl
. Una vez que se activa el grupo de datos
user_facts_etl
, el regenerador de Looker vuelve a compilar todos los PDT que usan ese grupo de datos (es decir, todos los PDT que se definen condatagroup_trigger: user_facts_etl
). En este ejemplo, el regenerador vuelve a compilaruser_facts_pdt_1
y, luego, auser_facts_pdt_2
.Cuando los PDT comparten el mismo
datagroup_trigger
, el regenerador vuelve a compilar los PDT en función de la dependencia, es decir, primero compila las tablas a las que hacen referencia otras tablas. Consulta la página de documentación Tablas derivadas en Looker para obtener más información sobre cómo Looker vuelve a compilar las tablas derivadas en cascada.Cuando el regenerador vuelve a compilar todos los PDT en el grupo de datos, este quita el grupo de datos
user_facts_etl
del estado activado.Una vez que el grupo de datos
user_facts_etl
ya no está en el estado activado, Looker restablece la caché para todos los modelos y exploraciones que usan el grupo de datosuser_facts_etl
(en otras palabras, todos los modelos y exploraciones que se definen conpersist_with: user_facts_etl
). En este ejemplo, eso significa que Looker restablece la caché para la exploración deuser_stuff
.Se enviarán todas las entregas de contenido programadas basadas en el grupo de datos de
user_facts_etl
. En este ejemplo, si hay una entrega programada que incluye una consulta de la exploración deuser_stuff
, la consulta programada se recuperará de la base de datos para obtener resultados actualizados.
Comparte grupos de datos entre archivos de modelos
En este ejemplo, se muestra cómo compartir grupos de datos con varios archivos de modelo. Este enfoque es ventajoso porque, si necesita editar un grupo de datos, debe hacerlo en un solo lugar para que esos cambios se apliquen en todos sus modelos.
Para compartir grupos de datos con varios archivos de modelo, primero, crea un archivo separado que contenga solo los grupos de datos y, luego, usa el parámetro include
para include
el archivo de grupos de datos en los archivos del modelo.
Crea un archivo de grupos de datos
Crea un archivo .lkml
separado para contener tus grupos de datos. Puedes crear un archivo de grupo de datos .lkml
de la misma forma en que puedes crear un archivo .lkml
Explore independiente.
En este ejemplo, el archivo de grupos de datos se llama datagroups.lkml
:
datagroup: daily {
max_cache_age: "24 hours"
sql_trigger: SELECT CURRENT_DATE();;
}
Incluye el archivo de grupos de datos en tus archivos de modelo
Ahora que creaste el archivo de grupos de datos, puedes include
en ambos modelos y usar persist_with
, ya sea para aplicar el grupo de datos a exploraciones individuales en tus modelos o para aplicar el grupo de datos a todas las exploraciones de un modelo.
Por ejemplo, los siguientes dos archivos de modelo include
el archivo datagroups.lkml
.
Este archivo se llama ecommerce.model.lkml
. El grupo de datos daily
se usa a nivel de explore
para que se aplique solo a la exploración de orders
:
include: "datagroups.model.lkml"
connection: "database1"
explore: orders {
persist_with: daily
}
El siguiente archivo se llama inventory.model.lkml
. El grupo de datos daily
se usa a nivel de model
para que se aplique a todas las exploraciones del archivo del modelo:
include: "datagroups.model.lkml"
connection: "database2"
persist_with: daily
explore: items {
}
explore: products {
}