Snowflake

Para conectar Looker a Snowflake, sigue estos pasos:

  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 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 manera individual.

De forma opcional, agrega la palabra clave ON FUTURE para conservar las sentencias GRANT en los objetos creados recientemente. Te recomendamos que lo ejecutes en todas las tablas de todos los esquemas que usará Looker para que no tengas que volver 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 conexiones de Snowflake, selecciona la casilla de verificación Todas las consultas para asegurarte de que todas las líneas se ejecuten. De forma predeterminada, Snowflake ejecuta solo las líneas que están seleccionadas.

La consola de Snowflake con la casilla de verificación Todas las consultas seleccionada.

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 a la mayoría de los dialectos de bases de datos. Consulta la página de documentación Conecta Looker a tu base de datos para obtener más información. Algunos de los parámetros de configuración se describen a continuació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á así: <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.
  • Authentication: Selecciona OAuth o cuenta de base de datos:
    • 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 deseas configurar OAuth para la conexión.
  • Habilitar PDT: Usa este botón de activación para habilitar las tablas derivadas persistentes (PDT). La habilitación de PDT revela campos de PDT adicionales y la sección PDT Overrides 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 Cantidad máxima de conexiones por nodo de la página de documentación Conecta 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 de SQL Runner y las estimaciones de ahorro en el cálculo para las consultas agregadas de reconocimiento 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: La zona horaria 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 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

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 independientes de Snowflake 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:

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

    La página User Attributes en Looker, que muestra el atributo de usuario del almacén Snowflake.

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

    La página User Attributes en Looker, que muestra el atributo de usuario del almacén Snowflake con los valores asignados a un grupo.

  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:

    La página Configuración de conexión en Looker, en la que se muestra el campo Parámetros adicionales de JDBC con el parámetro de atributo de usuario del almacén.

  5. 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 ver instrucciones más detalladas para este procedimiento en el blog de análisis de Red Pill.

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 específico, 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 cinco minutos antes de regresar. Estas funciones no se pueden configurar en Looker. Habilita estas funciones en la pestaña Warehouses de la IU de Snowflake.

La pestaña Depósitos en la IU de Snowflake, que muestra las casillas de verificación Autosuspend y Autoreanudar

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 Anulaciones de PDT, ingresa 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.

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.

Configura 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
  • Revocar la autorización para 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 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 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. Como protección contra 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 activo actual. 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 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 de 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 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 más información.

  • Las tablas derivadas persistentes (PDT) no son compatibles con las conexiones de Snowflake con OAuth.

  • Cuando un administrador de Looker realiza la solicitud como otro usuario, usa el token de acceso de OAuth de ese usuario. Si el token de acceso del usuario venció, el administrador no puede crear un token nuevo en nombre del usuario sudoed. 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. 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 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 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 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 tu base de datos antes en este procedimiento.

  5. 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, podrás probar la conexión mediante una de las siguientes opciones:

  • 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.

Más allá de eso, puedes probar la conexión y, luego, implementarla en un modelo si sigues estos pasos:

  1. En Looker, ve al Modo de desarrollo.
  2. Navega a los archivos del proyecto de un proyecto de Looker que use tu conexión de Snowflake.
  3. Abre un archivo de modelo, reemplaza el valor connection del modelo por el nombre de la nueva conexión de Snowflake y, luego, guarda el archivo de modelo.
  4. 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.
  5. Sigue las indicaciones de acceso de Snowflake y, luego, ingresa tus credenciales de Snowflake.

Una vez que accedas con éxito a Snowflake, Looker te regresará a tu consulta. Si tu consulta se ejecuta de forma correcta, 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.

La IU de Looker, que muestra la solicitud de acceso de OAuth.

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 con Looker, sigue estos pasos:

La página Cuenta en Looker, que muestra la sección Credenciales de conexión de OAuth.

  1. Haz clic en el menú de usuario de Looker.
  2. Selecciona Cuenta.
  3. En la página Cuenta, ve a la sección Credenciales de conexión de OAuth y selecciona el botón Acceder 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.10:

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
Cierre 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 distintivo
No
Procesos de presentación del ejecutor de SQL
No
Tabla de descripción del ejecutor de SQL
Índices de programas del ejecutor de SQL
No
Selección del ejecutor de SQL 10
Recuento de ejecutores de SQL
Explicación de SQL
Credenciales de OAuth
Comentarios contextuales
Agrupación de conexiones
Bocetos de 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.