Para conectar Looker a Snowflake, sigue estos pasos:
- Crea un usuario de Looker en Snowflake y aprovisiona el acceso.
- Configura una conexión de base de datos en Looker.
Encripta el tráfico de red
Se recomienda encriptar el tráfico de red entre la aplicación de Looker y tu base de datos. Considera una de las opciones que se describen en la página de documentación Habilita el acceso seguro a bases de datos.
Crea un usuario de Looker en Snowflake
Te recomendamos los siguientes comandos para crear el usuario de Looker. Asegúrate de ejecutar cada línea de forma individual.
De forma opcional, agrega la palabra clave
ON FUTURE
para conservar las sentenciasGRANT
en los objetos creados recientemente. Te recomendamos que ejecutes esta acción para las tablas de todos los esquemas que usará Looker, de modo que no debas volver a ejecutar las sentenciasGRANT
a medida que se creen tablas nuevas.
-- change role to ACCOUNTADMIN
use role ACCOUNTADMIN;
-- create role for looker
create role if not exists looker_role;
grant role looker_role to role SYSADMIN;
-- Note that we are not making the looker_role a SYSADMIN,
-- but rather granting users with the SYSADMIN role to modify the looker_role
-- create a user for looker
create user if not exists looker_user
password = <enter password here>;
grant role looker_role to user looker_user;
alter user looker_user
set default_role = looker_role
default_warehouse = looker_wh;
-- change role
use role SYSADMIN;
-- create a warehouse for looker (optional)
create warehouse if not exists looker_wh
-- set the size based on your dataset
warehouse_size = medium
warehouse_type = standard
auto_suspend = 1800
auto_resume = true
initially_suspended = true;
grant all privileges
on warehouse looker_wh
to role looker_role;
-- grant read only database access (repeat for all database/schemas)
grant usage on database <database> to role looker_role;
grant usage on schema <database>.<schema> to role looker_role;
-- rerun the following any time a table is added to the schema
grant select on all tables in schema <database>.<schema> to role looker_role;
-- or
grant select on future tables in schema <database>.<schema> to role looker_role;
-- create schema for looker to write back to
use database <database>;
create schema if not exists looker_scratch;
use role ACCOUNTADMIN;
grant ownership on schema looker_scratch to role SYSADMIN revoke current grants;
grant all on schema looker_scratch to role looker_role;
Si pegas los comandos anteriores como un lote en el panel de conexión de Snowflake, selecciona la casilla de verificación Todas las consultas para asegurarte de que se ejecuten todas las líneas. De forma predeterminada, Snowflake solo ejecuta las líneas que están seleccionadas.
Crea la conexión de Looker a tu base de datos
En la sección Administrador de Looker, selecciona Conexiones y, luego, haz clic en Agregar conexión.
Completa los detalles de la conexión. La mayoría de los parámetros de configuración son comunes en la mayoría de los dialectos de bases de datos. Consulta la página de documentación Cómo conectar Looker a tu base de datos para obtener información. A continuación, se describen algunos de los parámetros de configuración:
- Nombre: Asigna un nombre a la conexión. Así es como el modelo de LookML hará referencia a la conexión.
- Dialecto: Selecciona Snowflake.
- Host: Ingresa el nombre de host de Snowflake. Se verá como
<account_name>.snowflakecomputing.com
. Consulta los ejemplos de nombres de cuentas de Snowflake por región para asegurarte de utilizar el valor correcto para tu implementación. - Puerto: El valor predeterminado es 443.
- Base de datos: Ingresa la base de datos predeterminada que deseas usar. Este campo distingue mayúsculas de minúsculas.
- Esquema: Ingresa el esquema predeterminado.
- Autenticación: Selecciona Cuenta de base de datos o OAuth:
- Usa Database Account para especificar el Username y la Password de la cuenta de usuario de Snowflake que se usará para conectarse a Looker.
- Usa OAuth si quieres configurar OAuth para la conexión.
Habilitar PDT: Usa este botón de activación para habilitar las tablas derivadas persistentes (PDT). Si habilitas las PDT, se mostrarán campos de PDT adicionales y la sección Anulaciones de PDT para la conexión.
Temp Database: Si las PDT están habilitadas, establece este campo en un esquema en el que el usuario tenga privilegios completos para crear tablas, descartarlas, cambiarles el nombre y modificarlas.
Máximo de conexiones por nodo: Este parámetro de configuración se puede dejar en el valor inicial predeterminado. Obtén más información sobre este parámetro de configuración en la sección Max connections per node de la página de documentación Cómo conectar Looker a tu base de datos.
Estimación de costos: Habilita las estimaciones de costos para las consultas de Explorar, las estimaciones de costos para las consultas de SQL Runner y las estimaciones de ahorro de procesamiento para las consultas de conocimiento agregado en la conexión.
Zona horaria de la base de datos: Es la zona horaria que usa tu base de datos de Snowflake para almacenar fechas y horas. El valor predeterminado es UTC. Esto es opcional.
Zona horaria de la consulta: Es la zona horaria en la que deseas que se muestren tus consultas. Por ejemplo, hora del este de EE.UU. (América – Nueva York). Esto es opcional.
Parámetros adicionales de JDBC: Agrega parámetros de JDBC adicionales desde el controlador JDBC de Snowflake.
- Agrega
warehouse=<YOUR WAREHOUSE NAME>
. Además, de forma predeterminada, Looker establecerá los siguientes parámetros de Snowflake en cada sesión:
TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ
JDBC_TREAT_DECIMAL_AS_INT=FALSE
TIMESTAMP_INPUT_FORMAT=AUTO
AUTOCOMMIT=TRUE
Puedes anular cada uno de estos parámetros configurando un valor alternativo en el campo Parámetros adicionales de JDBC, por ejemplo:
&AUTOCOMMIT=FALSE
- Agrega
Para verificar que la conexión se haya establecido correctamente, haz clic en Probar. Consulta la página de documentación Prueba la conectividad de la base de datos para obtener información sobre la solución de problemas.
Para guardar esta configuración, haz clic en Conectar.
Designación de almacenes de Snowflake por grupo o por usuario
Puedes usar los atributos de usuario de Looker para asignar almacenes de Snowflake independientes a usuarios o grupos individuales de Looker. Esto es útil, por ejemplo, si tienes usuarios que requieren diferentes niveles de potencia de procesamiento. Puedes asignar un almacén con mayores recursos de procesamiento solo a los usuarios que lo necesitan y, al mismo tiempo, asignar un almacén con menos recursos a los usuarios con necesidades menores.
Para designar almacenes por grupo o por usuario, sigue estos pasos:
- Agrega los grupos o los usuarios a Looker.
Define un atributo de usuario en Looker en el que se almacenarán los nombres de los almacenes de Snowflake. Puedes asignarle cualquier nombre a este atributo, como
snowflake_wh
.En el atributo de usuario que acabas de definir, asigna los valores del nombre del almacén a los grupos o a los usuarios.
En el campo Parámetros adicionales de JDBC de la página Configuración de conexión, agrega lo siguiente y reemplaza
snowflake_warehouse
por el nombre del atributo de usuario que definiste:warehouse={{ _user_attributes['snowflake_warehouse'] }}
Por ejemplo:
Para probar la configuración de conexión individual, puedes usar sudo como un usuario al que le asignaste un valor de nombre de almacén.
Puedes ver instrucciones más detalladas para este procedimiento en el blog de Red Pill Analytics.
Función de suspensión automática de Snowflake
Los almacenes de Snowflake tienen una función de suspensión automática que está habilitada de forma predeterminada. Después de un período especificado, el almacén se suspenderá automáticamente. Si el almacén está suspendido, todas las consultas producirán un error. Este error no se ve en los paneles (por lo general, no se muestran datos), pero es visible cuando se realiza una consulta con la página Explorar.
Snowflake también tiene una función de reanudación automática que reanudará el almacén cuando se lo consulte. Sin embargo, reanudar el almacén puede tardar hasta cinco minutos, lo que hace que las consultas dejen de responder durante ese tiempo. Estas funciones no se pueden configurar en Looker. Habilita estas funciones en la pestaña Warehouses de la IU de Snowflake.
Compatibilidad con PDT
Para admitir la tabla derivada persistente, crea una cuenta de usuario de Snowflake para las PDT que tengan acceso de escritura a tu base de datos y el esquema temporal que Looker usará para crear las PDT. En la página Configuración de conexiones de Looker, en la sección Tablas derivadas persistentes (PDT), activa el botón de activación Habilitar PDT. Luego, en el campo Temp database, ingresa el nombre del esquema temporal que Looker usará para crear PDT. A continuación, en la sección PDT Overrides, ingresa el nombre de usuario y la contraseña del usuario de PDT. Consulta la página de documentación Cómo conectar Looker a tu base de datos para obtener más información.
Las PDT no son compatibles con las conexiones de Snowflake que usan OAuth.
Para las conexiones de Snowflake, Looker establece el valor del parámetro AUTOCOMMIT
en TRUE
(que es el valor predeterminado de Snowflake). La función AUTOCOMMIT es obligatoria para los comandos de SQL que ejecuta Looker para mantener su sistema de registro de PDT.
Cómo configurar OAuth para conexiones de Snowflake
Looker admite OAuth para las conexiones de Snowflake, lo que significa que cada usuario de Looker se autentica en la base de datos y autoriza a Looker a ejecutar consultas en la base de datos con la propia cuenta de usuario de OAuth del usuario.
OAuth permite a los administradores de bases de datos realizar las siguientes tareas:
- Audita qué usuarios de Looker ejecutan consultas en la base de datos
- Aplicar de manera forzosa controles de acceso basados en roles usando permisos a nivel de la base de datos
- Usar tokens de OAuth para todos los procesos y acciones que accedan a la base de datos, en lugar de incorporar los ID y las contraseñas de la base de datos en varios lugares
- Cómo revocar la autorización de un usuario determinado directamente a través de la base de datos
Con las conexiones de Snowflake que usan OAuth, los usuarios deben volver a acceder periódicamente cuando vencen sus tokens de OAuth. La duración de validez de los tokens de OAuth de Snowflake se establece a través de Snowflake.
Ten en cuenta lo siguiente para las conexiones de OAuth a nivel de la base de datos:
- Si un usuario deja que venza su token de OAuth, se verán afectadas las programaciones o alertas de Looker de su propiedad. Para evitar esto, Looker enviará un correo electrónico de notificación al propietario de cada programación y cada alerta antes de que venza el token de OAuth activo actual. Looker enviará estos correos electrónicos de notificación 14 días, 7 días y 1 día antes de que venza el token. El usuario puede ir a su página de usuario de Looker para volver a autorizarlo a la base de datos y evitar interrupciones en sus programas y alertas. Consulta la página de documentación Personaliza la configuración de la cuenta de usuario para obtener más información.
Debido a que las conexiones de bases de datos que usan OAuth son “por usuario”, las políticas de almacenamiento en caché también son por usuario y no solo por consulta. Esto significa que, en lugar de usar resultados almacenados en caché cada vez que se ejecute la misma consulta dentro del período de almacenamiento en caché, Looker usará los resultados almacenados en caché solo si el mismo usuario ejecutó la misma consulta dentro del período de almacenamiento en caché. Para obtener más información sobre el almacenamiento en caché, consulta la página de documentación Almacenamiento en caché de consultas.
Cuando usas OAuth, no puedes cambiar a diferentes roles en la cuenta de usuario de Snowflake. Como se describe en la documentación de Snowflake, Snowflake usa el rol predeterminado de la cuenta del usuario de Snowflake, a menos que el rol predeterminado sea ACCOUNTADMIN o SECURITYADMIN. Debido a que estos roles están bloqueados para OAuth, Snowflake usará el rol PÚBLICO. Consulta la documentación de Snowflake para obtener información.
Las tablas derivadas persistentes (PDT) no son compatibles con las conexiones de Snowflake con OAuth.
Cuando un administrador de Looker usa sudo como otro usuario, el administrador usará el token de acceso de OAuth de ese usuario. Si el token de acceso del usuario caducó, el administrador no puede crear un token nuevo en nombre del usuario con sudo. Consulta la página de documentación Usuarios para obtener información sobre el uso del comando
sudo
.
Configura una base de datos de Snowflake para OAuth con Looker
Para crear una conexión de Snowflake a Looker con OAuth, debes configurar la integración de OAuth en Snowflake. Se requiere una cuenta de usuario de Snowflake con permiso ACCOUNTADMIN.
Ejecuta el siguiente comando en Snowflake, donde
<looker_hostname>
es el nombre de host de tu instancia de Looker:CREATE SECURITY INTEGRATION LOOKER TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = LOOKER OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
Ejecuta el siguiente comando para obtener el ID y el secreto de cliente de OAuth:
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
La respuesta tendrá un
OAUTH_CLIENT_ID
y unOAUTH_CLIENT_SECRET
que necesitarás más adelante en este procedimiento.En Looker, crea una conexión nueva a tu almacén de Snowflake, como se describe en la sección Crea la conexión de Looker a tu base de datos de esta página. Cuando crees la conexión nueva, selecciona la opción OAuth en el campo Authentication. Cuando seleccionas la opción OAuth, Looker muestra los campos ID de cliente de OAuth y Secreto de cliente de OAuth.
Pega los valores
OAUTH_CLIENT_ID
yOAUTH_CLIENT_SECRET
que obtuviste de tu base de datos antes en este procedimiento.Completa el resto del procedimiento de Conecta Looker a tu base de datos.
Una vez que configures la conexión de Looker a tu base de datos, puedes probar la conexión de las siguientes maneras:
- Selecciona el botón Probar en la parte inferior de la página Configuración de conexiones, como se describe en la página de documentación Conecta Looker a tu base de datos.
- Selecciona el botón Probar junto a la ficha de la conexión en la página de administrador Conexiones, como se describe en la página de documentación de Conexiones.
Además, puedes probar la conexión y, luego, implementarla en un modelo siguiendo estos pasos:
- En Looker, ve al Modo de desarrollo.
- Navega a los archivos del proyecto de un proyecto de Looker que use tu conexión de Snowflake.
- Abre un archivo de modelo y reemplaza el valor
connection
del modelo por el nombre de la nueva conexión de Snowflake. Luego, guarda el archivo de modelo. - Abre una de las exploraciones o paneles del modelo y ejecuta una consulta. Cuando intentes ejecutar una consulta, Looker te pedirá que accedas a Snowflake.
- Sigue las indicaciones de acceso de Snowflake y, luego, ingresa tus credenciales de Snowflake.
Una vez que accedas correctamente a Snowflake, Looker te redireccionará a tu consulta. Si tu consulta se ejecuta correctamente, puedes confirmar el nuevo valor de conexión y, luego, implementar los cambios en producción.
Accede a Snowflake para ejecutar consultas
Una vez que se configure la conexión de Snowflake para OAuth, se les solicitará a los usuarios que accedan a Snowflake antes de ejecutar consultas. Esto incluye las consultas de las exploraciones, los paneles, las vistas y el Ejecutor de SQL.
Los usuarios también pueden acceder a Snowflake desde la sección OAuth Connection Credentials en la página Account.
Para acceder a tu cuenta de Snowflake con Looker, sigue estos pasos:
- Haz clic en el menú de usuario de Looker.
- Selecciona Cuenta.
- En la página Account, ve a la sección OAuth Connection Credentials y selecciona el botón Log In de la base de datos de Snowflake correspondiente.
Si seleccionas Acceder, se mostrará el diálogo de acceso de Snowflake. Ingresa tus credenciales de Snowflake, selecciona Acceder y, luego, elige Permitir para otorgarle a Looker acceso a tu cuenta de Snowflake.
Una vez que accedas a Snowflake a través de Looker, puedes salir de tus credenciales o volver a autorizarlas en cualquier momento desde la página Cuenta, como se describe en la página de documentación Personaliza tu cuenta de usuario.
Compatibilidad de características
Para que Looker admita algunas funciones, el dialecto de la base de datos también debe admitirlas.
Snowflake admite las siguientes funciones a partir de Looker 24/18:
Atributo | ¿Es compatible? |
---|---|
Nivel de asistencia | Admitido |
Looker (Google Cloud Core) | Sí |
Agregados simétricos | Sí |
Tablas derivadas | Sí |
Tablas derivadas de SQL persistentes | Sí |
Tablas derivadas persistentes nativas | Sí |
Vistas estables | Sí |
Eliminación de consultas | Sí |
Pivotes basados en SQL | Sí |
Zonas horarias | Sí |
SSL | Sí |
Subtotales | Sí |
Parámetros adicionales de JDBC | Sí |
Distingue mayúsculas de minúsculas | Sí |
Tipo de ubicación | Sí |
Tipo de lista | Sí |
Percentil | Sí |
Percentil distintivo | No |
Procesos de presentación del ejecutor de SQL | No |
Tabla Describe de SQL Runner | Sí |
Índices de Show de SQL Runner | No |
SQL Runner Select 10 | Sí |
Recuento de ejecutores de SQL | Sí |
Explicación de SQL | Sí |
Credenciales de OAuth | Sí |
Comentarios contextuales | Sí |
Agrupación de conexiones | Sí |
Esbozos de HLL | Sí |
Aggregate Awareness | Sí |
PDT incrementales | Sí |
Milisegundos | Sí |
Microsegundos | Sí |
Vistas materializadas | No |
Distinción de recuento aproximado | No |
Próximos pasos
Después de conectar tu base de datos a Looker, configura las opciones de acceso para tus usuarios.