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.