Snowflake

Sigue estos pasos para conectar Looker con Snowflake:

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

Cómo crear un usuario de Looker en Snowflake

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

De forma opcional, agrega la palabra clave ON FUTURE para conservar las sentencias GRANT en los objetos creados recientemente. Recomendamos ejecutar esto para las tablas en todos los esquemas que usará Looker, de modo que no sea necesario 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 pega los comandos anteriores como un lote en el panel de conexión Snowflake, seleccione la casilla de verificación All Queries para asegurarse de que todas las líneas se ejecuten. De forma predeterminada, Snowflake ejecuta solo las líneas seleccionadas.

Crea la conexión de Looker a tu base de datos

En la sección Administrador de Looker, seleccione Conexiones y, luego, haga clic en Agregar conexión.

Completa los detalles de la conexión. La mayoría de las opciones de configuración son comunes en la mayoría de los dialectos de las 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 LookML hará referencia a la conexión.
  • Dialecto: Selecciona Snowflake.
  • Host: Ingresa el nombre de host copo de nieve. Se verá como <account_name>.snowflakecomputing.com. Consulta Ejemplos de nombres de cuentas de copas de nieve por región para asegurarte de usar el valor adecuado para tu implementación.
  • Puerto: El valor predeterminado es 443.
  • Base de datos: Ingresa la base de datos predeterminada que se 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 la Cuenta de base de datos para especificar el Nombre de usuario y la Contraseña de la cuenta de usuario 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 tablas derivadas persistentes (PDT). Si habilita las PDT, se revelarán campos adicionales de PDT y la sección Anulaciones de PDT para la conexión.
  • Base de datos temporal: Si las PDT están habilitadas, establezca este campo en un esquema en el que el usuario tenga privilegios completos para crear, descartar, renombrar y modificar las tablas.
  • Cantidad máxima de conexiones por nodo: Esta configuración se puede dejar al valor predeterminado al principio. Obtén más información sobre esta configuración en la sección Max Connections per node de la página de documentación Conecta Looker a tu base de datos.
  • Estimación de costos: Habilita las estimaciones de costos de las consultas de Explorar, las estimaciones de costos de las consultas de SQL Runner y las estimaciones de ahorro de cálculos de consultas de reconocimiento agregadas en la conexión.
  • Zona horaria de la base de datos: Es la zona horaria que la base de datos Snowflake usa 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 desea que se muestren sus consultas. Por ejemplo, los estadounidenses del Este (América, Nueva York). Esto es opcional.
  • Parámetros adicionales de JDBC: Agregue parámetros JDBC adicionales del controlador JDBC de Snowflake.

    • Agrega warehouse=<YOUR WAREHOUSE NAME>.
    • Además, de forma predeterminada, Looker configurará 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 de JDBC adicionales (por ejemplo, &AUTOCOMMIT=FALSE).

Para verificar que la conexión se realice de forma correcta, haz clic en Probar. Consulta la página de documentación sobre cómo probar 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.

Designa 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 tiene usuarios que requieren diferentes niveles de capacidad de procesamiento. Puede asignar un almacén con más recursos de procesamiento solo a los usuarios que lo necesiten y, a la vez, asignar un almacén con menos recursos a los usuarios con necesidades menores.

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

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

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

  4. En el campo Parámetros de JDBC 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:

  5. Para probar la configuración de la conexión individual, puede sudo como un usuario al que le asignó un valor de nombre de almacén.

Para obtener instrucciones más detalladas sobre este procedimiento, consulte 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 se suspende el almacén, todas las consultas producirán un error. Este error no se ve en los paneles (por lo general, no se muestra ningún dato), 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 provoca que las consultas se detengan 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.

Compatibilidad con PDT

A fin de admitir la tabla derivada persistente, cree una cuenta de usuario de Snowflake para PDT que tenga acceso de escritura a su base de datos y el esquema predeterminado. En la página Configuración de conexiones de Looker, activa el botón de activación Habilitar 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 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). Se requiere AUTOCOMMIT para los comandos de SQL que ejecuta Looker a fin de mantener su sistema de registro de PDT.

Configurar OAuth para las conexiones de Snowflake

Looker admite OAuth para las 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 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 roles con los permisos de Snowflake
  • Usa tokens de OAuth para todos los procesos y acciones que acceden a Snowflake, en lugar de incorporar IDs y contraseñas de Snowflake en varios lugares
  • Revocar la autorización de un usuario determinado mediante Snowflake

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

Ten en cuenta lo siguiente para Snowflake con OAuth:

  • Si un usuario permite que venza su token de Snowflake, se verán afectados los programas o las alertas que posee. 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 actual de OAuth copo de nieve activo. 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.
  • Debido a que 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 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 sobre el 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. Como estos roles están bloqueados para OAuth, Snowflake usará el rol PUBLIC. 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 actúen como otro usuario, utilizarán el token de acceso de OAuth de ese usuario. Si venció el token de acceso del usuario, el administrador no podrá crear un token nuevo en nombre del usuario sudodo, que deberá acceder a Snowflake y volver a autorizar a Looker. Consulta la página de documentación de Usuarios a fin de obtener información para usar el comando sudo.

Configura una base de datos 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. Esto requiere una cuenta de usuario de Snowflake con el 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 una OAUTH_CLIENT_SECRET que necesitarás más adelante en este procedimiento.

  3. 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 nueva conexión, 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.

  4. Pega los valores OAUTH_CLIENT_ID y OAUTH_CLIENT_SECRET que obtuviste de la base de datos anteriormente 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 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 de Configuración de conexiones, como se describe en la página de documentación de Conexión de Looker a tu base de datos.
  • Selecciona el botón Probar en la lista de conexiones en la página de administración 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, ve a Development Mode.
  2. Navega a los archivos del proyecto para ver el proyecto de Looker que usa tu conexión Snowflake.
  3. Abre un archivo de modelo, reemplaza el valor connection del modelo con el nombre de la nueva conexión Snowflake y, luego, guarda el archivo del modelo.
  4. Abre uno de los paneles o Exploras 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 de Snowflake.

Una vez que accedas correctamente a Snowflake, Looker te devolverá 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 Snowflake para OAuth, se solicitará a los usuarios que accedan a Snowflake antes de ejecutar consultas. Esto incluye las consultas de Explorar, paneles, estilos y SQL Runner.

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.

Sigue estos pasos para acceder a tu cuenta de Snowflake con Looker:

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

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

Una vez que accedas a Snowflake con Looker, podrás salir o volver a autorizar tus credenciales en cualquier momento mediante tu página de Account, 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, tu dialecto de base de datos también debe admitirlas.

Snowflake admite las siguientes funciones a partir de Looker 23.8:

Atributo ¿Es compatible?
Nivel de asistencia
Admitido
Looker (Google Cloud Core)
Agregaciones simétricas
Tablas derivadas
Tablas derivadas de SQL persistente
Tablas derivadas persistentes nativas
Vistas estables
Asesinato de consultas
Pivotes basados 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 Show del ejecutor de SQL
No
Tabla de descripción del ejecutor de SQL
Índices de SQL Runner Show
No
Ejecutor de SQL Select 10
Recuento de ejecutores de SQL
Explicación de SQL
Credenciales de OAuth
Comentarios de contexto
Agrupación de conexiones
Bocetos de HLL
Reconocimiento global
PDT incrementales
Milisegundos
Microsegundos
Vistas materializadas
No
Distinto del recuento aproximado
No

Próximos pasos

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