Saltar al contenido principal

Una publicación etiquetados con "connector"

Ver Todas las Etiquetas

· 6 min de lectura
Fritz larco

fondo

Introducción a Sling CLI

Sling CLI es una herramienta de línea de comandos que permite el movimiento fácil y eficiente de datos (Extracción y carga) desde/hacia bases de datos, plataformas de almacenamiento y aplicaciones SaaS. Es trivial comenzar, simplemente puede ejecutar pip install sling si tiene instalado el pip de Python. O puede descargar el binario para su máquina aquí.

Credenciales de conexión

Para usar sling, primero debemos configurar las credenciales de conexión y Sling CLI las busca en varios lugares. Esto permite una naturaleza de "plug & play" si ya está utilizando otra herramienta como dbt, o tiene URL de conexión configuradas en variables de entorno. Sin embargo, se recomienda usar el archivo env.yaml de Sling, ya que permite una experiencia más consistente y flexible.

Archivo Sling Env

La primera vez que ejecuta el comando sling, la carpeta .sling se crea en el directorio de inicio del usuario actual (~/.sling), que a su vez contiene un archivo llamado env.yaml. La estructura del archivo Env de Sling es simple, coloca la credencial de sus conexiones debajo de la tecla connections como se muestra a continuación:

connections:
marketing_pg:
url: 'postgres://...'
ssh_tunnel: 'ssh://...' # optional

# o estilo de perfil dbt
marketing_pg:
type: postgres
host: [hostname]
user: [username]
password: [password]
port: [port]
dbname: [database name]
schema: [dbt schema]
ssh_tunnel: 'ssh://...'

finance_bq:
type: bigquery
method: service-account
project: [GCP project id]
dataset: [the name of your dbt dataset]
keyfile: [/path/to/bigquery/keyfile.json]

# variables globales, disponibles para todas las conexiones en tiempo de ejecución (opcional)
variables:
aws_access_key: '...'
aws_secret_key: '...'

Consulte aquí para conocer todos los tipos de conexión aceptados y sus respectivos puntos de datos necesarios.

Al usar el comando sling conns list con las credenciales de Sling Env, la columna SOURCE se mostrará como sling env yaml.

Variables de entorno

Si prefiere usar variables de entorno, basta con configurarlas en su entorno de shell de la forma habitual:

# Mac/Linux
export MY_PG='postgresql://user:mypassw@pg.host:5432/db1'
export MY_SNOWFLAKE='snowflake://user:mypassw@sf.host/db1'
export ORACLE_DB='oracle://user:mypassw@orcl.host:1521/db1'

# PowerShell de Windows
set MY_PG 'postgresql://user:mypassw@pg.host:5432/db1'
set MY_SNOWFLAKE 'snowflake://user:mypassw@sf.host/db1'
set ORACLE_DB 'oracle://user:mypassw@orcl.host:1521/db1'

Al usar el comando sling conns list con variables de entorno, la columna SOURCE se mostrará como env variable.

Perfiles DBT

dbt es otra herramienta popular que muchos profesionales de datos usan a diario, y admitir perfiles locales existentes permite un uso cruzado sencillo. La ubicación típica de las credenciales de dbt se encuentra en el archivo ~/dbt/profiles.yml. Consulte aquí para obtener más detalles.

Si tiene dbt credenciales y utiliza el comando sling conns list, la columna SOURCE se mostrará como dbt profiles yaml.

El subcomando conns

Ahora que ha configurado las credenciales, sling ofrece un subcomando conns para interactuar con las conexiones. Podemos realizar las siguientes operaciones: list, test y discover.

$ sling conns -h
conns - Manage local connections

Usage:
conns [discover|list|test]

Subcommands:
discover list available streams in connection
list list local connections detected
test test a local connection

Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.

Listado de conexiones

Es conveniente ver y listar todas las conexiones disponibles en nuestro entorno. Simplemente podemos ejecutar el comando sling conns list. Aquí hay un ejemplo:

$ sling conns list
+----------------------+------------------+-------------------+
| CONN NAME | CONN TYPE | SOURCE |
+----------------------+------------------+-------------------+
| AWS_S3 | FileSys - S3 | sling env yaml |
| AZURE_STORAGE | FileSys - Azure | sling env yaml |
| BIGQUERY | DB - BigQuery | sling env yaml |
| BIONIC_DB1 | DB - PostgreSQL | dbt profiles yaml |
| BTD_S3 | FileSys - S3 | sling env yaml |
| CLICKHOUSE | DB - Clickhouse | sling env yaml |
| DEMO_POSTGRES | DB - PostgreSQL | sling env yaml |
| GITHUB_DBIO | API - GitHub | sling env yaml |
| NOTION | API - Notion | sling env yaml |
| SNOWFLAKE | DB - Snowflake | env variable |
| STEAMPIPE | DB - PostgreSQL | sling env yaml |
+----------------------+------------------+-------------------+

Conexiones de prueba

La herramienta Sling CLI también permite probar conexiones. Una vez que conocemos el nombre de la conexión, podemos usar el comando sling conns test:

$ sling conns test -h
test - test a local connection

Usage:
test [name]

Positional Variables:
name The name of the connection to test (Required)
Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.

He aquí un ejemplo real:

$ sling conns test MSSQL
6:42PM INF success!

Descubriendo flujos de conexión

Este es otro subcomando ingenioso que permite ver qué flujos de datos están disponibles para leer sling para una conexión en particular: el comando sling conns discover.

$ sling conns discover -h
discover - list available streams in connection

Usage:
discover [name]

Positional Variables:
name The name of the connection to test (Required)
Flags:
--version Displays the program version string.
-h --help Displays help with available flag, subcommand, and positional value parameters.
-f --filter filter stream name by pattern (e.g. account_*)
--folder discover streams in a specific folder (for file connections)
--schema discover streams in a specific schema (for database connections)

Para conexiones de base de datos, mostrará una lista de las tablas y vistas disponibles. Para las conexiones de almacenamiento, enumerará los objetos de archivo no recursivos ubicados en la carpeta de origen especificada. Para conexiones SaaS/API, enumerará todos los objetos disponibles que existen para el consumo. A continuación se muestran algunos ejemplos.

Conexiones de base de datos

$ sling conns discover CLICKHOUSE
6:57PM INF Found 68 streams:
- "default"."docker_logs"
- "default"."sling_docker_logs"
- "system"."aggregate_function_combinators"
- "system"."asynchronous_metric_log"
- "system"."asynchronous_metrics"
- "system"."build_options"
- "system"."clusters"
....

Si queremos filtrar por un shema específico, podemos hacer:

$ sling conns discover CLICKHOUSE --schema default
8:29PM INF Found 2 streams:
- "default"."docker_logs"
- "default"."sling_docker_logs"

Conexiones SaaS

$ sling conns discover NOTION
6:58PM INF Found 4 streams:
- blocks
- databases
- pages
- users

Conexiones de almacenamiento

$ sling conns discover AWS_S3
6:52PM INF Found 7 streams:
- s3://my-sling-bucket/logging/
- s3://my-sling-bucket/part.01.0001.csv
- s3://my-sling-bucket/sling/
- s3://my-sling-bucket/temp/
- s3://my-sling-bucket/test.fs.write/
- s3://my-sling-bucket/test/
- s3://my-sling-bucket/test_1000.csv

Si queremos ver los archivos en una subcarpeta, podemos hacer esto:

$ sling conns discover AWS_S3 --folder s3://my-sling-bucket/logging/
6:55PM INF Found 1 streams:
- s3://my-sling-bucket/logging/1/1.log.gz

Ejecutando tareas EL

Ahora que sus conexiones están configuradas, ¡está listo para ejecutar algunas tareas de extracción y carga! Cubrimos esto en detalle en una publicación separada, puede leer sobre esto [aquí] (https://docs.slingdata.io/sling-cli/running-tasks). Desde la línea de comandos, también puede ejecutar sling run -e, que imprimirá un montón de ejemplos.

Conclusión

Considerándolo todo, Sling CLI facilita la administración e interacción con varios tipos de conexiones desde su shell. Si tiene alguna pregunta o sugerencia, no dude en contactarnos [aquí] (https://slingdata.io/es/contact). Además, asegúrese de consultar Sling Cloud, que es un servicio en la nube que maneja sus diversas necesidades de extracción y carga a un modelo de precio competitivo.