Saltar al contenido principal

Snowflake

Snowflake es una plataforma de almacenamiento y análisis de datos en la nube. En Gredit, esta integración permite conectarse directamente a una base de datos Snowflake para consultar información mediante ODBC.

Para qué se usa

Configurar una conexión a Snowflake para que los guiones puedan ejecutar consultas SQL y extraer información desde una base de datos en la nube.

Configuración

Datos necesarios

DatoDónde obtenerlo
ServerDesde la url. Ejemplo: https://app.snowflake.com/east-us-2.azure/mpa37119/#/homepage, el valor es mpa37119
UIDUsuario técnico o personal habilitado
PWDCredencial del usuario en Snowflake
DatabaseCatálogo de bases en Snowflake
SchemaCatálogo de bases en Snowflake
WarehouseProjects - SQL Query
RoleProjects - SQL Query

Obtener database y schema:

Alta de la base de datos en Gredit

Obtener role y warehouse:

Haz click en Projects → + Add new → SQL File. Colócale el nombre que quieras y ejecutalo con este contenido:

SELECT
CURRENT_ROLE(),
CURRENT_WAREHOUSE();

Alta de la base de datos en Gredit

Alta de la base de datos en Gredit

  1. Ir a la sección de Bases de datos y crear una nueva configuración.
  2. Completar los datos obtenidos.
  3. En Controlador, usar SnowflakeDSIIDriver.
  4. El valor de Nombre será el identificador para inyectar la conexión en los guiones.

Alta de la base de datos en Gredit

Uso en guiones

Ruby

db = ODBC.connect('snowflake_test')

sql = <<~SQL
SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER LIMIT 5
SQL

stmt = db.run(sql)
columns = stmt.columns.map { |c| c.first }
rows = []

while (row = stmt.fetch)
row_hash = columns.zip(row.to_a).to_h
rows << row_hash
end

puts rows.inspect

stmt.drop
db.disconnect

Python

import pyodbc

cnxn = gredit.connect('snowflake_test')

sql = """
SELECT *
FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
LIMIT 5
"""

cursor = cnxn.cursor()
cursor.execute(sql)

columns = [col[0] for col in cursor.description]
rows = [dict(zip(columns, row)) for row in cursor.fetchall()]

print(rows)

cursor.close()
cnxn.close()

Relación con otros módulos

  • Cuentas: La conexión de Snowflake pertenece a una cuenta.
  • Guiones: Puede asociarse a uno o varios guiones de forma opcional.
  • Permisos: Se controla por roles y permisos asignados.