Uso
view: my_view {
derived_table: {
materialized_view: yes
...
}
}
|
Jerarquía
materialized_view |
Valor predeterminado
no
Acepta
Un valor booleano (yes o no)
Reglas especiales
materialized_view solo se admite en dialectos específicos
|
Definición
La funcionalidad de vistas materializadas es una función avanzada. Según tu dialecto, una vista materializada puede consumir muchos recursos, por lo que es importante que comprendas la implementación de las vistas materializadas de tu dialecto. Consulta la documentación de tu dialecto para obtener información sobre su comportamiento y la frecuencia con la que actualiza los datos para las vistas materializadas.
Las vistas materializadas te permiten aprovechar la funcionalidad de tu base de datos para conservar las tablas derivadas en tu proyecto de Looker. Si tu dialecto de base de datos admite vistas materializadas y tu conexión de Looker está configurada con la opción Tablas derivadas persistentes habilitada, puedes crear una vista materializada especificando materialized_view: yes para una tabla derivada. Las vistas materializadas son compatibles con las tablas derivadas nativas y las tablas derivadas basadas en SQL.
Al igual que una tabla derivada persistente (PDT), una vista materializada es un resultado de consulta que se almacena como una tabla en el esquema temporal de tu base de datos. La diferencia clave entre una PDT y una vista materializada radica en la forma en que se actualizan las tablas:
- En el caso de las PDT, la estrategia de persistencia se define en Looker, y Looker administra la persistencia.
- En el caso de las vistas materializadas, la base de datos es responsable de mantener y actualizar los datos de la tabla.
Por este motivo, la funcionalidad de vistas materializadas requiere un conocimiento avanzado de tu dialecto y sus funciones. En la mayoría de los casos, tu base de datos actualizará la vista materializada cada vez que detecte datos nuevos en las tablas que consulta la vista materializada. Las vistas materializadas son óptimas para situaciones que requieren datos en tiempo real.
Si una tabla derivada con una instrucción materialized_view: yes también tiene un parámetro datagroup, sql_trigger_value o persist_for, la instrucción materialized_view: yes tendrá prioridad.
Ejemplo
Esta tabla derivada e_flights_pdt tiene la instrucción materialized_view: yes, por lo que se crea una vista materializada en el esquema temporal de la base de datos:
view: e_flights_pdt {
derived_table: {
materialized_view: yes
explore_source: ontime {
column: flight_num {}
column: carrier {}
column: arr_date {}
}
}
dimension: flight_num {}
dimension: carrier {}
dimension: arr_date {
type: date
}
}
Cuándo Looker crea la vista materializada
Looker genera vistas materializadas de la misma manera que otras PDT. Si creas la vista materializada y la consultas en el modo de desarrollo, Looker creará una versión de desarrollo de la vista materializada, que también se puede usar para la producción. Consulta la sección Tablas persistentes en el modo de desarrollo en la página de documentación Tablas derivadas en Looker para obtener más detalles.
De lo contrario, la vista materializada se crea durante el próximo ciclo del regenerador de Looker, después de que el LookML de la tabla derivada asociada se implemente en producción con materialized_view: yes.
Vistas de bases de datos estables para vistas materializadas
Looker crea automáticamente una vista de base de datos estable para cada vista materializada. La vista estable de la base de datos se crea en la propia base de datos, de modo que se pueda consultar fuera de Looker. Esta es la misma funcionalidad de vista estable que se usa con el parámetro publish_as_db_view.
Looker crea la vista estable durante el próximo ciclo del regenerador de Looker, después de que el LookML de la vista materializada se implemente en producción. Una vez que se publique la vista estable de la base de datos, podrás consultarla directamente.
Los administradores o los usuarios con el permiso see_pdts pueden obtener el nombre estable de la vista de la base de datos en el modal Detalles de PDT en la página Tablas derivadas persistentes de la sección Administrador de Looker.
Para consultar una vista materializada directamente, solo agrega el nombre del esquema de borrador antes del nombre de la tabla. Por ejemplo, si el nombre de la vista de base de datos estable es NN_e_redflight_e_redflight_publish_as_db y el nombre del esquema de trabajo es tmp, puedes consultar la vista de base de datos estable con un comando como este:
SELECT * from tmp.NN_e_redflight_e_redflight_publish_as_db
Requisitos para las vistas materializadas
Para usar vistas materializadas en tu proyecto de Looker, necesitas lo siguiente:
- Un dialecto de base de datos que admite vistas materializadas. Consulta la sección Compatibilidad de dialectos con vistas materializadas en esta página para ver la lista de dialectos que admiten vistas materializadas.
- Es un esquema de prueba en tu base de datos. Puede ser cualquier esquema de tu base de datos, pero te recomendamos que crees uno nuevo que se use solo para este propósito. El administrador de la base de datos debe configurar el esquema con permiso de escritura para el usuario de la base de datos de Looker.
- Una conexión de Looker configurada con la opción Tablas derivadas persistentes habilitada Por lo general, esto se configura cuando configuras inicialmente tu conexión de Looker (consulta la página de documentación de los dialectos de Looker para obtener instrucciones sobre el dialecto de tu base de datos), pero también puedes habilitar los PDT para tu conexión después de la configuración inicial.
- Una conexión de Looker con el permiso
CREATE TABLEpara el esquema temporal en tu base de datos Este es el mismo permiso que se requiere para crear PDT. Además, para crear la vista estable de la base de datos para la vista materializada, la conexión debe tener permisosCREATE VIEWpara el esquema temporal de tu base de datos. Puedes probar la conexión para verificar que tenga estos permisos:- Si los PDT están habilitados en la conexión y esta tiene el permiso
CREATE TABLE, la prueba de conexión devolverá un resultado comoCan use persistent derived tables in temp schema "docsexamples_scratch" in database "demo_db". - Si la conexión permite vistas estables y tiene el permiso
CREATE VIEW, la prueba de conexión devolverá un resultado comoCan use stable views in temp schema "docsexamples_scratch" in database "flightstats".
- Si los PDT están habilitados en la conexión y esta tiene el permiso
Consideraciones importantes sobre las vistas materializadas
Con las vistas materializadas, Looker no mantiene ni actualiza los datos de la tabla. Por este motivo, la funcionalidad de vistas materializadas requiere un conocimiento avanzado de tu dialecto y sus funciones. Estos son algunos aspectos que debes tener en cuenta cuando crees una vista materializada:
- Algunos dialectos tienen limitaciones para las vistas materializadas, como intervalos máximos de actualización predeterminados y compatibilidad con las uniones. Looker no genera errores de LookML sobre la funcionalidad específica del dialecto de las vistas materializadas. En cambio, Looker generará un error si no se puede compilar la vista materializada, ya sea como un evento en el Registro de eventos de PDT o como un error de tiempo de ejecución si intentas consultar la vista materializada. Consulta la documentación de tu dialecto sobre las limitaciones de las vistas materializadas.
- Algunos dialectos verifican la actualidad de la consulta cuando se consultan vistas materializadas, lo que puede agregar una pequeña demora para obtener los resultados de la consulta. Consulta la documentación de tu dialecto para ver si este es el caso.
- Algunos dialectos intentarán actualizar la vista materializada de forma incremental en lugar de volver a compilarla por completo. Consulta la documentación de tu dialecto para obtener más información.
- Si tu vista materializada usa una tabla base que se borró de la base de datos, es posible que no puedas consultar la vista materializada y que no se puedan compilar versiones nuevas.
- Si una tabla derivada con una instrucción
materialized_view: yestambién tiene un parámetro datagroup,sql_trigger_valueopersist_for, la instrucciónmaterialized_view: yestendrá prioridad. - Las vistas materializadas admiten los mismos parámetros específicos del dialecto que admiten las tablas derivadas en general, como particiones, claves de ordenamiento y índices.
- En el caso de las tablas derivadas en cascada, las vistas materializadas pueden depender de las PDT de Looker, con las siguientes advertencias:
- No puedes usar una tabla derivada con la estrategia de persistencia
persist_foren la definición de una tabla derivada conmaterialized_view: yes. En el caso de las vistas materializadas, la tabla de origen de una vista materializada siempre debe estar presente en la base de datos. Las tablas derivadas depersist_forse descartan de tu base de datos después de la cantidad de tiempo especificada en el parámetropersist_for, por lo que no se garantiza que estén presentes en la base de datos. - Las PDT se vuelven a compilar con un nombre único, por lo que, si una vista materializada usa una PDT en su definición, la vista materializada se actualizará para apuntar a la nueva versión de la PDT cada vez que se vuelva a compilar la PDT. Esto significa que la vista materializada se volverá a compilar desde cero si una dependencia se vuelve a compilar por completo, lo que puede afectar el rendimiento. En este caso, una mejor opción es hacer referencia a una tabla base que sea solo de anexos o a un PDT incremental que se defina con Looker.
- No puedes usar una tabla derivada con la estrategia de persistencia
Compatibilidad de dialectos para vistas materializadas
La capacidad de convertir una tabla derivada en una vista materializada depende del dialecto de la base de datos que usa tu conexión de Looker. En la versión actual de Looker, los siguientes dialectos admiten vistas materializadas:
| Dialecto | ¿Es compatible? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13+ | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |