Uso
Jerarquía
test - o - test - o - test |
Valor predeterminado
NingunaAcepta
Es el identificador de la prueba de datos, más los subparámetros que definen las aserciones y las consultas de prueba.
|
Definición
Consulte el tema Pruebas de datos de LookML: Recomendaciones y prácticas recomendadas para obtener más información y sugerencias sobre las pruebas de datos.
Looker tiene el validador de LookML a fin de verificar que su código de LookML sea válido sintácticamente y el validador de contenido para verificar las referencias de objetos entre su contenido y su modelo.
Además de esos validadores, el parámetro test
te permite validar la lógica de tu modelo. Para cada prueba de datos, creas una consulta y una sentencia de aserción yesno
. La prueba de datos ejecuta la consulta de prueba y verifica que la aserción sea verdadera para cada fila de la consulta de prueba. Si la declaración de aserción muestra yes
para cada fila de la consulta de prueba, se pasa la prueba de datos.
Si la configuración de tu proyecto está establecida para exigir la realización de pruebas de datos antes de la implementación en la producción, el IDE presentará el botón Ejecutar pruebas después de confirmar los cambios en el proyecto. Los desarrolladores de LookML deben ejecutar las pruebas de datos antes de implementar cambios en la producción.
Independientemente de si tu proyecto requiere pruebas de datos antes de la implementación en producción, un desarrollador de LookML que se encuentra en el modo de desarrollo puede ejecutar pruebas de datos en cualquier momento para verificar la lógica del modelo.
Puedes crear pruebas de datos en archivos de modelo, ver archivos o en archivos de prueba de datos independientes y dedicados. Cuando uses un archivo exclusivo para alojar las pruebas de datos, recuerda include
el archivo de prueba en cualquier archivo de modelo o archivo de vista en el que quieras ejecutar las pruebas.
Una prueba de datos no puede tener el mismo nombre y
explore_source
que otra prueba de datos en el mismo proyecto. Si usas el mismoexplore_source
para varias pruebas de datos en tu proyecto, asegúrate de que los nombres de las pruebas de datos sean únicos.
El parámetro test
tiene los siguientes subparámetros:
explore_source
: Define la consulta que se usará en la prueba de datos.assert
: Define una expresión de Looker que se ejecuta en cada fila de la consulta de prueba para verificar los datos.
Una vez que definas el LookML para tu prueba, puedes ejecutar la prueba de datos para verificar que funcione correctamente y ver si la lógica de tu modelo pasa la prueba (debes estar en modo de desarrollo para ejecutar pruebas de datos).
Hay varias formas de iniciar pruebas de datos en un proyecto:
- Si ajustas la configuración del proyecto para requerir que se aprueben las pruebas de datos antes de implementar los archivos en la producción, el IDE presentará el botón Ejecutar pruebas después de que confirmes los cambios en el proyecto. Se ejecutarán todas las pruebas de tu proyecto, sin importar qué archivo defina la prueba. Debes pasar las pruebas de datos antes de implementar los cambios en la producción.
- Haz clic en el botón Run Data Tests en el panel Project Health. Esto ejecutará todas las pruebas de datos en tu proyecto, sin importar qué archivo defina la prueba.
- Selecciona la opción Run LookML Tests en el menú del archivo. Solo se ejecutarán las pruebas que se definen en el archivo actual.
Una vez que ejecutes las pruebas de datos, el panel Project Health te mostrará el progreso y los resultados:
Puede hacer clic en el vínculo Explorar consulta para abrir una página Explorar con la consulta definida en la prueba de datos.
explore_source
El parámetro explore_source
de una prueba de datos usa la misma sintaxis y lógica que el parámetro explore_source
de una tabla derivada. La única diferencia es que el explore_source
de una prueba de datos no admite los subparámetros derived_column
, bind_filters
y bind_all_filters
.
Sugerencia práctica: Una forma sencilla de obtener el LookML de
explore_source
es usar una exploración existente para crear tu consulta, luego selecciona Obtener LookML en el menú de ajustes de Explorar y haz clic en la pestaña Tabla derivada para obtener la LookML de la consulta. Consulte nuestra documentación sobre cómo crear tablas derivadas nativas para obtener más información.
Ten en cuenta lo siguiente para la explore_source
de una prueba de datos:
La consulta
explore_source
de una prueba de datos es una consulta estándar de Looker, lo que significa que la consultaexplore_source
de la prueba tiene un límite de 5,000 filas. Asegúrate de que tu búsqueda no supere las 5,000 filas a fin de obtener un conjunto de resultados completo para probar. Puedes incorporar filtros o ordenar en tuexplore_source
para reducir la cantidad de filas en tu consulta o colocar las filas relevantes en la parte superior de la consulta.Un
explore
conextension: required
no se puede usar comoexplore_source
para una prueba de datos. El validador de LookML generará un error que indica que no se puede encontrar elexplore_source
.
assert
El subparámetro assert
define los criterios por los que el resultado de la consulta explore_source
se considera válido. El subparámetro expression
acepta una expresión de Looker que da como resultado una yesno
(booleano). Después de que se ejecuta la consulta explore_source
, la expresión de la aserción se evalúa para cada fila del conjunto de resultados de la consulta. Si hay una respuesta no
para cualquier fila de la consulta, la prueba de datos falla. Si la consulta en sí tiene errores, la prueba también fallará.
Una prueba puede tener varias declaraciones assert
. Para pasar la prueba, cada aserción debe ser verdadera para cada fila de la consulta explore_source
.
Sugerencia práctica: Puedes usar el cuadro de diálogo de cálculos de tablas para probar la sintaxis de expresión de Looker a fin de usarla en el parámetro
expression
de tu prueba.
Para usarlos en pruebas de datos, los campos de la expresión de Looker deben tener alcance completo, lo que significa que se especifican con el formato view_name.field_name
. Por ejemplo, la siguiente expresión declara el campo como aircraft_engine_types.aircraft_engine_type_id
:
assert: engine_type_id_not_null {
expression: NOT is_null(${aircraft_engine_types.aircraft_engine_type_id}) ;;
}
Ejemplos
Cómo garantizar que una clave primaria sea única
En la siguiente prueba de datos, se crea una consulta de la exploración de orders
y se define un expression
para probar que los ID de pedido sean únicos en el conjunto de resultados. La consulta explore_source
crea un recuento de las filas asociadas con cada ID en la base de datos. Si el ID es único, la base de datos debe tener solo una fila para un ID. Además, ordena el recuento y limita el conjunto de resultados a una fila, por lo que la respuesta a la consulta será el ID con el recuento más alto. Si algún ID tiene un recuento superior a 1, sabemos que hay varias filas para ese ID y, por lo tanto, el ID no es único. Si ese es el caso, la prueba de datos fallará.
test: order_id_is_unique {
explore_source: orders {
column: id {}
column: count {}
sorts: [orders.count: desc]
limit: 1
}
assert: order_id_is_unique {
expression: ${orders.count} = 1 ;;
}
Verifica un valor conocido
La siguiente prueba de datos verifica que el valor de ingresos de 2017 sea siempre de USD 626,000. En este conjunto de datos, ese es un valor conocido que nunca debe cambiar.
test: historic_revenue_is_accurate {
explore_source: orders {
column: total_revenue {
field: orders.total_revenue
}
filters: [orders.created_date: "2017"]
}
assert: revenue_is_expected_value {
expression: ${orders.total_revenue} = 626000 ;;
}
}
Confirma que no hay valores nulos
La siguiente prueba de datos comprueba que no haya valores nulos en los datos. Este explore_source
usa un sort
para garantizar que se muestren los nulos en la parte superior de la consulta. El ordenamiento por valores nulos puede variar en función del dialecto. En la siguiente prueba, se usa desc: yes
como ejemplo.
test: status_is_not_null {
explore_source: orders {
column: status {}
sorts: [orders.status: desc]
limit: 1
}
assert: status_is_not_null {
expression: NOT is_null(${orders.status}) ;;
}
}