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.

Cifrar el tráfico de red

Te recomendamos que cifres el tráfico de red entre la aplicación Looker y tu base de datos. Considera una de las opciones descritas en la página de documentación Habilitar el acceso seguro a la base de datos.

Crear un usuario de Looker en Snowflake

Te recomendamos que uses los siguientes comandos para crear el usuario de Looker. Asegúrate de ejecutar cada línea por separado o selecciona la opción Todas las consultas en el panel de conexión de Snowflake para que se ejecuten todas las líneas (de forma predeterminada, Snowflake solo ejecuta las líneas seleccionadas):

La consola de Snowflake con la casilla Todas las consultas marcada.

Te recomendamos que añadas la palabra clave ON FUTURE a cada instrucción GRANT para que los objetos recién creados tengan los mismos permisos sin que tengas que hacer nada más.

-- 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;

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

En la sección Administrar de Looker, selecciona Conexiones y, a continuación, haz clic en Añadir conexión.

Rellena los detalles de la conexión. La mayoría de los ajustes son comunes a la mayoría de los dialectos de bases de datos. Consulta la página de documentación Conectar Looker a tu base de datos para obtener información. Las descripciones de los siguientes ajustes contienen notas específicas de Snowflake:

Ajustes de la base de datos - Host: introduce el nombre de host de Snowflake. Tendrá este aspecto: <account_name>.snowflakecomputing.com. Consulta ejemplos de nombres de cuenta de Snowflake por región para asegurarte de que usas el valor correcto en tu implementación.

Configuración de la base de datos - Método de autenticación: selecciona uno de los siguientes métodos de autenticación:

Configuración opcional: habilita los PDTs: los PDTs no se admiten en las conexiones de Snowflake que usan la autenticación OAuth. Si necesitas PDTs, usa la opción de autenticación Par de claves.

Ajustes opcionales: parámetros JDBC adicionales: añade parámetros JDBC adicionales del controlador JDBC de Snowflake.

  • Añade warehouse=<YOUR WAREHOUSE NAME>.
  • Además, de forma predeterminada, Looker definirá 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 definiendo un valor alternativo en el campo Parámetros JDBC adicionales. Por ejemplo: &AUTOCOMMIT=FALSE

Para verificar que la conexión se ha realizado correctamente, haz clic en Probar. Consulta la página de documentación Probar la conectividad de la base de datos para obtener información sobre cómo solucionar problemas.

Para guardar estos ajustes, 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 de Looker concretos. Esto resulta útil, por ejemplo, si tienes usuarios que necesitan diferentes niveles de potencia informática. Puedes asignar un almacén con más recursos de computación solo a los usuarios que lo necesiten, mientras que asignas un almacén con menos recursos a los usuarios con menos necesidades.

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

  1. Añade los grupos o usuarios en Looker.
  2. Define un atributo de usuario en Looker donde se almacenarán los nombres de los almacenes de Snowflake. Puede asignar el nombre que quiera a este atributo, como snowflake_wh.

    La página Atributos de usuario de Looker, que muestra el atributo de usuario del almacén de datos de Snowflake.

  3. En el atributo de usuario que acabas de definir, asigna los valores de nombre de almacén a los grupos o usuarios que necesiten un acceso diferente al almacén.

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

  4. En el campo Additional JDBC parameters (Parámetros JDBC adicionales) de la página Connection Settings (Ajustes de conexión), añade lo siguiente y sustituye snowflake_warehouse por el nombre del atributo de usuario que hayas definido:

      warehouse={{ _user_attributes['snowflake_warehouse'] }}
    
  5. Para probar los ajustes de conexión individuales, puedes usar sudo como usuario al que hayas asignado un valor de nombre de almacén.

Gestionar la 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 periodo determinado, el almacén se suspenderá automáticamente. Si el almacén está suspendido, todas las consultas generarán un error. Este error no se muestra en los paneles de control (normalmente, estos errores provocan que no se muestren datos), pero sí lo pueden ver los usuarios que hagan consultas en la página Explorar.

Normalmente, se utilizan dos métodos para gestionar esto:

  1. Snowflake tiene una función de reanudación automática que reanudará el almacén cuando se consulte. Sin embargo, reanudar el almacén puede tardar hasta cinco minutos, lo que provoca que las consultas dejen de responder durante ese tiempo antes de devolverse. No se puede configurar la reanudación automática en Looker. Habilita estas funciones en la pestaña Almacenes de la interfaz de usuario de Snowflake:

    La pestaña Almacenes de la interfaz de usuario de Snowflake, que muestra las casillas de verificación de suspensión automática y reanudación automática.

  2. Si se han habilitado las tablas derivadas persistentes (PDTs), la configuración predeterminada de Looker es comprobar si se regeneran las tablas derivadas cada 5 minutos. Esta comprobación mantendrá activos los almacenes de Snowflake. Sin embargo, puede que quieras que Snowflake suspenda los almacenes fuera del horario de trabajo para reducir los costes. Para ello, puedes modificar la programación de regeneración de PDT, tal como se describe en la documentación sobre la programación del mantenimiento.

Compatibilidad con PDT

No se admiten PDTs en conexiones de Snowflake que usen OAuth.

Para admitir tablas derivadas persistentes, crea una cuenta de usuario de Snowflake para las PDTs que tenga acceso de escritura a tu base de datos y al esquema temporal que Looker usará para crear PDTs. En la página Configuración de conexiones de Looker, en la pestaña Configuración opcional de la sección Configuración de tablas derivadas persistentes (PDTs), activa el interruptor Habilitar PDTs. A continuación, en el campo Temp database (Base de datos temporal), introduce el nombre del esquema temporal que Looker usará para crear PDTs.

Ten en cuenta que la opción Sustituciones de PDT no está disponible para las conexiones de Snowflake que usan la autenticación de pares de claves.

En las conexiones de Snowflake, Looker asigna el valor TRUE al parámetro AUTOCOMMIT de Snowflake, que es el valor predeterminado de Snowflake. AUTOCOMMIT es obligatorio para los comandos SQL que ejecuta Looker para mantener su sistema de registro de PDTs.

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 con su propia cuenta de usuario de OAuth.

OAuth permite a los administradores de bases de datos realizar las siguientes tareas:

  • Auditar qué usuarios de Looker están ejecutando consultas en la base de datos
  • Aplicar controles de acceso basados en roles mediante permisos a nivel de base de datos
  • Usa tokens de OAuth en todos los procesos y acciones que accedan a la base de datos, en lugar de insertar IDs y contraseñas de la base de datos en varios lugares.
  • 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 iniciar sesión periódicamente cuando caduquen sus tokens de OAuth. La antigüedad máxima de los tokens de OAuth de Snowflake se define en Snowflake.

Ten en cuenta lo siguiente sobre las conexiones OAuth a nivel de base de datos:

  • No se admiten las tablas derivadas persistentes (PDTs) en las conexiones de Snowflake con OAuth.
  • Si un usuario deja que caduque su token de OAuth, se verán afectadas todas las alertas o las programaciones de Looker que sean de su propiedad. Para evitarlo, Looker enviará un correo de notificación al propietario de cada programación y alerta 14, 7 y 1 día antes de que caduque el token. El usuario puede ir a su página de usuario de Looker para volver a autorizar a Looker a acceder a la base de datos y evitar interrupciones en sus programaciones y alertas. Consulta la página de documentación Personalizar la configuración de la cuenta de usuario para obtener más información.
  • Como 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 Looker solo usará los resultados almacenados en caché si el mismo usuario ha ejecutado la misma consulta durante el periodo 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é.
  • Cuando se usa OAuth, no se puede cambiar a otros roles en la cuenta de usuario de Snowflake. Tal 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 en su lugar. Consulta la documentación de Snowflake para obtener información.
  • Cuando un administrador de Looker usa sudo como otro usuario, el administrador usará el token de acceso OAuth de ese usuario. Si el token de acceso del usuario ha caducado, el administrador no puede crear un token en nombre del usuario con privilegios de superusuario. Consulta la página de documentación Usuarios para obtener información sobre el uso del comando sudo.

Configurar una base de datos de Snowflake para OAuth con Looker

Para crear una conexión de Snowflake a Looker mediante OAuth, debes configurar la integración de OAuth en Snowflake. Para ello, se necesita una cuenta de usuario de Snowflake con el permiso ACCOUNTADMIN.

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

    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    La respuesta incluirá OAUTH_CLIENT_ID y OAUTH_CLIENT_SECRET, que necesitarás más adelante en este procedimiento.

  3. En Looker, crea una conexión con tu almacén de Snowflake, tal como se describe en la sección Crear la conexión de Looker con tu base de datos de esta página. Cuando crees la 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 de cliente de OAuth.

  4. Pega los valores de OAUTH_CLIENT_ID y OAUTH_CLIENT_SECRET que has obtenido de tu base de datos anteriormente en este procedimiento.

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

Probar la conexión OAuth

Una vez que hayas configurado la conexión de Looker a tu base de datos, puedes probarla de una de estas dos formas:

  • Selecciona el botón Probar en la parte inferior de la página Configuración de conexiones, tal como se describe en la página de documentación Conectar Looker a tu base de datos.
  • Seleccione el botón Probar situado junto a la conexión en la página de administración Conexiones, tal como se describe en la página de documentación Conexiones.

Además, puedes probar la conexión e implementarla en un modelo siguiendo estos pasos:

  1. En Looker, activa el modo de desarrollo.
  2. Ve a los archivos de proyecto de un proyecto de Looker que use tu conexión de Snowflake.
  3. Abre un archivo de modelo y sustituye el valor connection del modelo por el nombre de la nueva conexión de Snowflake. A continuación, guarda el archivo de modelo.
  4. Abre una de las exploraciones o los paneles de control del modelo y ejecuta una consulta. Cuando intentes ejecutar una consulta, Looker te pedirá que inicies sesión en Snowflake.
  5. Sigue las indicaciones para iniciar sesión en Snowflake e introduce tus credenciales de Snowflake.

Una vez que hayas iniciado sesión correctamente en Snowflake, Looker te devolverá a tu consulta. Si la consulta se ejecuta correctamente, puedes confirmar el nuevo valor de conexión y desplegar los cambios en producción.

Iniciar sesión en Snowflake para ejecutar consultas

Una vez que se haya configurado la conexión de Snowflake para OAuth, se pedirá a los usuarios que inicien sesión en Snowflake antes de ejecutar las consultas. Esto incluye las consultas de Exploraciones, paneles de control, Looks y SQL Runner.

Interfaz de Looker que muestra la petición de inicio de sesión de OAuth.

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

Para iniciar sesión en tu cuenta de Snowflake con Looker, sigue estos pasos:

La página Cuenta de 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 Iniciar sesión de la base de datos de Snowflake correspondiente.

Si seleccionas Iniciar sesión, se mostrará un cuadro de diálogo de inicio de sesión de Snowflake. Introduce tus credenciales de Snowflake y selecciona Iniciar sesión. A continuación, selecciona Permitir para dar acceso a Looker a tu cuenta de Snowflake.

Una vez que hayas iniciado sesión en Snowflake a través de Looker, podrás cerrar sesión o volver a autorizar tus credenciales en cualquier momento desde la página Cuenta, tal como se describe en la página de documentación Personalizar tu cuenta de usuario.

Funciones admitidas

Para que Looker admita algunas funciones, el dialecto de tu base de datos también debe admitirlas.

Snowflake admite las siguientes funciones a partir de Looker 25.14:

Función ¿Es compatible?
Nivel de asistencia
Compatible
Looker (servicio principal de Google Cloud)
Agregados simétricos
Tablas derivadas
Tablas derivadas de SQL persistentes
Tablas derivadas nativas persistentes
Vistas estables
Eliminación de consultas
Pivotes basados en SQL
Zonas horarias
SSL
Subtotales
Parámetros adicionales de JDBC
Distingue entre mayúsculas y minúsculas
Tipo de ubicación
Tipo de lista
Percentil
Percentil de valores distintos
No
SQL Runner Show Processes
No
SQL Runner Describe Table
SQL Runner Show Indexes
No
SQL Runner Select 10
Recuento de SQL Runner
Explicación de SQL
Credenciales de OAuth 2.0
Comentarios contextuales
Grupo de conexiones
Esquemas HLL
Notoriedad agregada
PDTs incrementales
Milisegundos
Microsegundos
Vistas materializadas
No
Métricas de comparación con el periodo anterior
Recuento aproximado de valores distintos
No

Pasos siguientes

Una vez que hayas conectado tu base de datos a Looker, configura las opciones de inicio de sesión para tus usuarios.