Snowflake

Sigue estos pasos para conectar Looker a Snowflake:

  1. Crea un usuario de Looker en Snowflake y aprovisiona el acceso.
  2. Configura una conexión de base de datos en Looker.

Encripta el tráfico de red

Una práctica recomendada es 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 la base de datos.

Crea un usuario de Looker en Snowflake

Recomendamos los siguientes comandos para crear el usuario de Looker. Asegúrate de ejecutar cada línea de manera individual.

De manera opcional, agrega la palabra clave ON FUTURE para conservar las sentencias GRANT en los objetos recién creados. Recomendamos ejecutar este comando para las tablas en todos los esquemas que usará Looker, de modo que no tengas que volver a ejecutar las sentencias GRANT a medida que se crean 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 conexiones 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 ejecuta solo las líneas que están seleccionadas.

Creando 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 más 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 Copo de nieve.
  • Host: Ingresa el nombre de host de Snowflake. Se verá así: <account_name>.snowflakecomputing.com. Consulta los ejemplos de nombres de cuentas de Snowflake por región para asegurarte de usar 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 (Schema): Ingresa el esquema predeterminado.
  • Authentication: Selecciona OAuth o Database Account:
    • Usa Database Account para especificar el nombre de usuario y la contraseña de la cuenta de usuario de Snowflake que se usará para conectarse a Looker.
    • Usa OAuth si deseas 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, descartar, cambiar el nombre de las tablas y modificarlas.
  • Cantidad máxima de conexiones por nodo: Inicialmente, este parámetro de configuración puede dejarse con el valor predeterminado. Obtén más información sobre este parámetro de configuración en la sección Cantidad máxima de conexiones por nodo 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 reconocimiento agregadas en la conexión.
  • Zona horaria de la base de datos: 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 (Query Time Zone): la zona horaria en la que deseas que muestren tus consultas. Por ejemplo, este de EE.UU. (América – Nueva York). Esto es opcional.
  • Parámetros adicionales de JDBC: Agrega parámetros de JDBC adicionales del controlador de 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

      Para anular cada uno de estos parámetros, configura un valor alternativo en el campo Parámetros adicionales de JDBC, por ejemplo: &AUTOCOMMIT=FALSE

Para verificar que la conexión se haya realizado 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.

Designar 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 aquellos usuarios que lo necesiten y, al mismo tiempo, asignar un almacén con menos recursos a los usuarios con menos necesidades.

Para designar almacenes por grupo o por usuario, sigue estos pasos:

  1. Agrega los grupos o los usuarios en Looker.
  2. Define un atributo de usuario en Looker en el que se almacenarán los nombres del almacén de Snowflake. Puedes asignarle cualquier nombre a este atributo, como snowflake_wh.

  3. En el atributo de usuario que acabas de definir, asigna los valores del nombre del almacén a los grupos o usuarios.

  4. 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:

  5. 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 las 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 puede ver en los paneles (por lo general, no se muestran datos), pero es visible cuando se realizan consultas 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 se detengan durante cinco minutos antes de devolverlas. Estas funciones no se pueden configurar en Looker. Habilita estas funciones en la pestaña Warehouses de la IU de Snowflake.

Compatibilidad con PDT

A fin de admitir las tablas derivadas persistentes, crea una cuenta de usuario de Snowflake para las PDT que tenga acceso de escritura a tu base de datos y el esquema predeterminado. En la página Configuración de las conexiones de Looker, activa el botón Habilitar las PDT. Luego, en la sección Anulaciones de PDT, 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.

En el caso de las conexiones de Snowflake, Looker establece el valor del parámetro AUTOCOMMIT en TRUE (que es el valor predeterminado de Snowflake). AUTOCOMMIT es necesario para los comandos de SQL que ejecuta Looker a fin de mantener su sistema de registro de PDT.

Configura OAuth para las conexiones de Snowflake

Looker admite OAuth para conexiones de Snowflake, lo que significa que cada usuario de Looker se autentica en Snowflake y autoriza a Looker a ejecutar consultas en la base de datos con su propia cuenta de usuario de Snowflake.

OAuth permite que los administradores de bases de datos realicen las siguientes acciones:

  • Audita qué usuarios de Looker ejecutan consultas en la base de datos
  • Aplicar controles de acceso basados en funciones mediante permisos de Snowflake
  • Usa tokens de OAuth para todos los procesos y acciones que accedan a Snowflake, en lugar de incorporar IDs y contraseñas de Snowflake en varios lugares.
  • Revocar la autorización de un usuario determinado con Snowflake

Con las conexiones de Snowflake que utilizan OAuth, los usuarios deben volver a acceder periódicamente cuando venzan sus tokens de OAuth. La duración de la validez de los tokens de OAuth de Snowflake se establece mediante Snowflake.

Ten en cuenta lo siguiente para Snowflake con OAuth:

  • Si un usuario permite que venza su token de Snowflake, se verán afectadas sus programaciones o alertas. Para evitar esto, Looker enviará una notificación por correo electrónico al propietario de cada programa y cada alerta antes de que venza el token de OAuth de Snowflake que está activo. Looker enviará estas notificaciones por correo electrónico 14, 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 autorizar a Looker en la base de datos y evitar cualquier interrupción en sus programas y alertas. Para obtener más información, consulta la página de documentación Personaliza la configuración de la cuenta de usuario.
  • Como las conexiones de Snowflake 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 los resultados almacenados en caché cada vez que se ejecuta 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 durante ese período. Para obtener más información sobre el almacenamiento en caché, consulta la página de documentación Cómo almacenar consultas en caché.
  • 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 ADMINISTRADOR DE CUENTAS o ADMINISTRADOR DE SEGURIDAD. Debido a que estos roles están bloqueados para OAuth, Snowflake usará el rol PÚBLICO. Consulta la documentación de Snowflake para obtener más información.
  • Las tablas derivadas persistentes (PDT) no son compatibles con las conexiones de Snowflake con OAuth.
  • Los administradores, cuando utilicen la identidad de otro usuario, usarán el token de acceso de OAuth de ese usuario. Si el token de acceso del usuario venció, el administrador no podrá crear uno nuevo en nombre del usuario sudoed, sino que deberá acceder a Snowflake y volver a autorizar a Looker. Consulta la página de documentación de 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.

  1. Ejecuta el siguiente comando en Snowflake, en el que <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';
    
  2. Para obtener el ID y el secreto de cliente de OAuth, ejecuta el siguiente comando:

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    La respuesta tendrá un OAUTH_CLIENT_ID y un OAUTH_CLIENT_SECRET que necesitarás más adelante en este procedimiento.

  3. En Looker, crea una conexión nueva a tu almacén de Snowflake, como se describe en la página de documentación Conecta Looker a tu base de datos. Cuando crees la nueva conexión, selecciona la opción OAuth en el campo Autenticación. Cuando seleccionas la opción OAuth, Looker muestra los campos ID de cliente de OAuth y Secreto del cliente de OAuth.

  4. Pega los valores OAUTH_CLIENT_ID y OAUTH_CLIENT_SECRET que obtuviste de la base de datos antes en este procedimiento.

  5. Completa el resto del procedimiento para conectar Looker a tu base de datos.

Una vez que configures la conexión de Looker con tu base de datos, puedes probar la conexión de una 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 de Conexiones, como se describe en la página de documentación de Conexiones.

Más allá de eso, puedes probar la conexión y, luego, implementarla en un modelo de la siguiente manera:

  1. En Looker, ve al Modo de desarrollo.
  2. Navega a los archivos de proyecto de Looker que use tu conexión de Snowflake.
  3. Abre un archivo del modelo, reemplaza el valor connection del modelo por el nombre de la nueva conexión de Snowflake y, luego, guarda el archivo del modelo.
  4. Abre una de las exploraciones o los paneles del modelo y ejecuta una consulta. Cuando intentes ejecutar una consulta, Looker te pedirá que accedas a Snowflake.
  5. Sigue las indicaciones de acceso de Snowflake y, luego, ingresa tus credenciales de Snowflake.

Una vez que accedas a Snowflake, Looker te redireccionará a tu consulta. Si tu consulta se ejecuta correctamente, puedes confirmar el nuevo valor de la 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 Credenciales de conexión OAuth en la página de su Cuenta.

Para acceder a tu cuenta de Snowflake con Looker, sigue estos pasos:

  1. Haz clic en el menú de usuario de Looker.
  2. Selecciona Cuenta.
  3. En la página Cuenta, desplázate hacia abajo hasta la sección Credenciales de conexión de OAuth y selecciona el botón Acceder para obtener la base de datos de Snowflake que desees.

Se mostrará una ventana emergente de acceso de Snowflake. Ingresa tus credenciales de Snowflake y selecciona Acceder. Luego, selecciona Permitir para que Looker pueda acceder a tu cuenta de Snowflake.

Una vez que accedas a Snowflake a través de Looker, podrás salir o volver a autorizar tus credenciales 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.6:

Atributo ¿Es compatible?
Nivel de asistencia
Admitido
Looker (Google Cloud Core)
Agregados simétricos
Tablas derivadas
Tablas derivadas de SQL persistentes
Tablas derivadas persistentes nativas
Vistas estables
Finalización de consultas
Tablas dinámicas basadas en SQL
Zonas horarias
SSL
Subtotales
Parámetros adicionales de JDBC
Distingue mayúsculas de minúsculas
Tipo de ubicación
Tipo de lista
Percentil
Percentil distinto
No
Procesos de presentación del ejecutor de SQL
No
Tabla de descripción del ejecutor de SQL
Mostrar índices del ejecutor de SQL
No
Selector de SQL 10 Select
Recuento de ejecutores de SQL
Explicación de SQL
Credenciales de OAuth
Comentarios de contexto
Agrupación de conexiones
Bocetos HLL
Reconocimiento agregado
PDT incrementales
Milisegundos
Microsegundos
Vistas materializadas
No
Recuento aproximado de valores distintos
No

Próximos pasos

Después de conectar tu base de datos a Looker, configura las opciones de acceso para tus usuarios.