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.

Crea un usuario de Looker en Snowflake

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

De forma opcional, agrega la palabra clave ON FUTURE para conservar las declaraciones GRANT en los objetos creados recientemente. Recomendamos ejecutar esto para las tablas en todos los esquemas que usará Looker, por lo que no es necesario que vuelvas a ejecutar las declaraciones 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 conexión Snowflake, marca la casilla Todas las consultas para asegurarte de que todas las líneas se ejecuten. De forma predeterminada, Snowflake solo ejecuta las líneas seleccionadas:

Agrega la conexión

Usa la interfaz de Looker para configurar la conexión de la base de datos: En la sección Administrador de Looker, selecciona Conexiones y, luego, haz clic en Agregar conexión. Consulta la página de documentación Conecta Looker a tu base de datos para obtener más información.

Ingresa la información de la conexión en los campos obligatorios:

  • Nombre: Otorga un nombre a la conexión. Así es como el modelo LookML hará referencia a la conexión.
  • Dialecto: Selecciona Snowflake.
  • Host: Ingresa el nombre de host del copo de nieve. Se verá como <account_name>.snowflakecomputing.com. Revisa los ejemplos de nombres de cuentas de copos de nieve por región a fin de asegurarte de usar el valor adecuado para la implementación.
  • Puerto: El valor predeterminado es 443.
  • Database: Ingresa la base de datos predeterminada que se debe usar; este campo distingue entre mayúsculas y minúsculas.
  • Nombre de usuario y contraseña: ingresa el nombre de usuario y la contraseña del usuario que se conectará a Looker.
  • Esquema (Schema): Ingresa el esquema predeterminado.
  • Tablas derivadas persistentes: Marque esta casilla para habilitar las tablas derivadas persistentes (PDT). Esto revela campos PDT adicionales y la columna Anulaciones de PDT.
  • Base de datos temporal: Si los PDT están habilitados, establece este campo en un esquema en el que el usuario tenga privilegios completos para crear, soltar, cambiar el nombre y modificar las tablas.
  • Cantidad máxima de conexiones: Este es el tamaño opcional del grupo de conexiones. Puedes usar el valor predeterminado o leer más sobre esta configuración en la sección Conexiones máximas 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 Explorar, las estimaciones de costos para las consultas del ejecutor de SQL y las estimaciones de ahorro de cálculo para las consultas de reconocimiento agregadas en la conexión.
  • Zona horaria de la base de datos: Es la zona horaria que usa la base de datos de Snowflake para almacenar fechas y horas. El valor predeterminado es UTC. Esto es opcional.
  • Zona horaria de consulta: Es la zona horaria en la que deseas que se muestren tus consultas. Por ejemplo, en el este de EE.UU. (América – Nueva York). Esto es opcional.
  • Parámetros adicionales: Agrega parámetros 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 copo de nieve 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 valores mediante la configuración de un valor alternativo en el campo Parámetros adicionales, por ejemplo: &AUTOCOMMIT=FALSE.

Haz clic en Probar esta configuración para verificar que la conexión con Snowflake se haya realizado correctamente. 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.

Haz clic en Agregar conexión para guardar la conexión.

Designa almacenes de copos de nieve por grupo o por usuario.

Puedes usar los atributos de usuario de Looker para asignar almacenes de Snowflake a usuarios individuales o grupos de Looker. Esto es útil, por ejemplo, si tiene usuarios que requieren diferentes niveles de potencia de procesamiento. Puedes asignar un almacén con más recursos de procesamiento solo a los usuarios que lo necesitan, mientras que puedes asignar un almacén con menos recursos a los usuarios con menos necesidades.

Para designar almacenes por grupo o por usuario, haz lo siguiente:

  1. Agrega los grupos o usuarios a Looker.
  2. Define un atributo de usuario para almacenar los nombres de los almacenes de Snowflake:

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

  4. En el campo Parámetros adicionales de la página Configuración de conexión, agregue lo siguiente y reemplace snowflake_warehouse por el nombre del atributo de usuario que definió:

  warehouse={{ _user_attributes['snowflake_warehouse'] }}

Por ejemplo:

  1. Para probar la configuración de conexión individual, puedes sudo como un usuario al que le asignaste un valor de nombre de almacén.

Puede encontrar instrucciones más detalladas para este procedimiento en el blog de Red Pill Analytics.

Suspensión automática de la función Copo de nieve

Los almacenes de copos de nieve tienen una función de suspensión automática habilitada de forma predeterminada. Después de un período especificado, el almacén se suspenderá automáticamente. Si se suspende el almacén, todas las consultas generarán un error. Este error no es visible a través de paneles (por lo general, no se muestran datos), pero se puede ver cuando se 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 se interrumpan durante cinco minutos antes de regresar. Estas funciones se pueden configurar en la pestaña Almacenes:

Asistencia de PDT

A fin de obtener asistencia sobre la tabla derivada persistente, cree una cuenta de usuario de Snowflake para PDT con acceso de escritura a su base de datos y al esquema predeterminado. En la página de Configuración de conexiones de Looker, marque la casilla Tablas derivadas persistentes. Luego, en la columna Anulaciones de PDT, ingrese el nombre de usuario y la contraseña del usuario de PDT. Consulta la página de documentación Conecta Looker a tu base de datos para obtener más información.

Los PDT no son compatibles con conexiones de copo de nieve que usan OAuth.

Para las conexiones 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 para mantener su sistema de registro de PDT.

Configura OAuth para conexiones de Snowflake

Looker admite OAuth para conexiones 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 a los administradores de bases de datos:

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

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

Ten en cuenta lo siguiente para Snowflake con OAuth:

  • Si un usuario deja que venza su token de copo de nieve, sus programas o alertas se verán afectados. Para evitar esto, Looker enviará una notificación por correo electrónico al propietario de cada programa y a cada alerta antes de que caduque el token activo actual de Snowflake OAuth. Looker enviará estas notificaciones por correo electrónico 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 autorizar a Looker a la base de datos y evitar cualquier interrupción 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.
  • Dado que las conexiones de Snowflake que usan OAuth son por usuario, las políticas de almacenamiento en caché también se realizan por usuario y no solo por consulta. Por lo tanto, en lugar de usar los resultados almacenados en caché cada vez que se ejecute la misma consulta dentro del período de almacenamiento en caché, Looker utilizará 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 Consultas de caché y recompilación de PDT con grupos de datos.
  • Cuando usas OAuth, no puedes cambiar a diferentes funciones en la cuenta de usuario de Snowflake. Como se describe en la documentación de Snowflake, Snowflake utiliza la función predeterminada de la cuenta del usuario de Snowflake, a menos que la función predeterminada sea ACCOUNTADMIN o SECURITYADMIN. Debido a que estas funciones están bloqueadas para OAuth, Snowflake usará la función PUBLIC. Consulta la documentación de copo de nieve para obtener más información.
  • Las tablas derivadas persistentes (PDT) no son compatibles con conexiones Snowflake con OAuth.
  • Los administradores, cuando se suplanten como otro usuario, usarán el token de acceso OAuth de ese usuario. Si el token de acceso del usuario caducó, el administrador no podrá crear un token nuevo en nombre del usuario sudoed, quien 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 con Looker mediante 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:
  CREATE SECURITY INTEGRATION LOOKER
    TYPE = OAUTH
    ENABLED = TRUE
    OAUTH_CLIENT = LOOKER
    OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';

En el ejemplo anterior, <looker_hostname> es el nombre de host de tu instancia de Looker.

  1. Obtén el ID de cliente y el secreto de OAuth mediante la ejecución del 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.

  1. En Looker, cree una nueva conexión a su almacén de Snowflake, como se describe en la página de documentación Cómo conectar Looker a su base de datos. Cuando crees la conexión nueva, marca la casilla de verificación Usar OAuth. Cuando selecciones Usar OAuth, verás los campos ID de cliente de OAuth y Secreto de cliente de OAuth:

  2. Pega los valores OAUTH_CLIENT_ID y OAUTH_CLIENT_SECRET del paso 2.

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

Una vez que configuras la conexión de Looker a tu base de datos, puedes probar la conexión en sí mediante una de las siguientes opciones:

  • Haga clic en el botón Probar esta configuración en la parte inferior de la página Configuración de conexiones, como se describe en la página de documentación Cómo conectar Looker a su base de datos.
  • Haz clic en el botón Probar junto a la lista de conexiones en la página de administrador de 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 de la siguiente manera:

  1. En Looker, dirígete al modo de desarrollo.
  2. Navega a los archivos del proyecto de un proyecto de Looker que use tu conexión a Snowflake.
  3. Abre un archivo de modelo y reemplaza el valor connection del modelo por el nombre de la nueva conexión Snowflake. Luego, guarda el archivo de 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 instrucciones de acceso de Snowflake e ingresa tus credenciales.

Una vez que accedas correctamente a Snowflake, Looker regresará a tu consulta. Si tu consulta se ejecuta correctamente, puedes confirmar el valor de conexión nuevo 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 pedirá a los usuarios que accedan a Snowflake antes de ejecutar consultas. Esto incluye consultas de Exploraciones, paneles, Look y SQL Runner. Este es un ejemplo de la exploración que usa una conexión de copo de nieve para la cual el usuario debe acceder:

Los usuarios también pueden acceder a Snowflake desde la sección Credenciales de conexión de OAuth en la página de su Cuenta.

Para acceder a tu cuenta de Snowflake mediante Looker, haz lo siguiente:

  1. Seleccione Cuenta en el menú del usuario.
  2. Desplázate hacia abajo hasta la sección Credenciales de conexión de OAuth y haz clic en el botón Acceder para la base de datos Snowflake deseada.
  3. Ingresa tus credenciales de Snowflake a través de la interfaz de Snowflake y haz clic en Acceder.
  4. Haz clic en Permitir para que Looker pueda acceder a tu cuenta de Snowflake.

Una vez que accedes a Snowflake a través de Looker, puedes salir o volver a autorizar tus credenciales en cualquier momento a través de la página de tu 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.

En la versión más reciente de Looker, Snowflake admite las siguientes funciones de Looker:

Próximos pasos

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