Introduction à Sling CLI
Sling CLI est un outil de ligne de commande qui permet le movement simple et efficace des données (extraction et chargement) de/vers les bases de données, les plates-formes de stockage et les applications SaaS. C'est trivial pour commencer, vous pouvez simplement exécuter pip install sling
si vous avez installé le pip de Python. Ou vous pouvez télécharger le binaire pour votre machine ici.
Identifiants de connexion
Pour utiliser sling
, nous devons d'abord configurer les informations d'identification de connexion, et Sling CLI les recherche à divers endroits. Cela permet une nature "plug & play" si vous utilisez déjà un autre outil tel que dbt
, ou si vous avez des URL de connexion définies dans des variables d'environnement. Il est cependant recommandé d'utiliser le fichier env.yaml
de Sling car il permet une expérience plus cohérente et flexible.
Fichier Env de Sling
La première fois que vous exécutez la commande sling
, le dossier .sling
est créé dans le répertoire personnel de l'utilisateur actuel (~/.sling
), qui contient la dedant un fichier appelé env.yaml
. La structure du fichier Env de Sling est simple, vous placez les informations d'identification de vos connexions sous la clé connections
comme indiqué ci-dessous :
connections:
marketing_pg:
url: 'postgres://...'
ssh_tunnel: 'ssh://...' # optional
# ou style de profil 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 pour toutes les connexions lors de l'exécution (facultatif)
variables:
aws_access_key: '...'
aws_secret_key: '...'
Veuillez consulter ici pour tous les types de connexion acceptés et leurs points de données respectifs nécessaires.
Lors de l'utilisation de la commande sling conns list
avec les informations d'identification Sling Env, la colonne SOURCE
s'affichera sous la forme sling env yaml
.
Variables d'environnement
Si vous préférez utiliser des variables d'environnement, il suffit de les définir dans votre environnement shell de la manière habituelle :
# 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'
# Windows Powershell
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'
Lors de l'utilisation de la commande sling conns list
avec des variables d'environnement, la colonne SOURCE
s'affichera sous la forme env variable
.
Profils DBT
dbt
est un autre outil populaire que de nombreux professionnels des données utilisent quotidiennement, et la prise en charge des profils locaux existants permet une utilisation croisée facile. L'emplacement typique des informations d'identification dbt se trouve dans le fichier ~/dbt/profiles.yml
. Voir ici pour plus de détails.
Si vous avez des informations d'identification dbt
en place et utilisez la commande sling conns list
, la colonne SOURCE
s'affichera comme dbt profiles yaml
.
La sous-commande conns
Maintenant que vous avez défini les informations d'identification, sling propose une sous-commande conns
pour interagir avec les connexions. Nous pouvons effectuer les opérations suivantes : list
, test
et 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.
Liste des connexions
Il est pratique de voir et de répertorier toutes les connexions disponibles dans notre environnement. Nous pouvons simplement exécuter la commande sling conns list
. Voici un exemple:
$ 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 |
+----------------------+------------------+-------------------+
Test des connexions
L'outil Sling CLI permet également de tester les connexions. Une fois que nous connaissons le nom de la connexion, nous pouvons utiliser la commande 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.
Voici un exemple concret :
$ sling conns test MSSQL
6:42PM INF success!
Découverte des flux de connexion
Il s'agit d'une autre sous-commande astucieuse qui permet de voir quels flux de données sont disponibles pour sling
est lu à partir d'une connexion particulière : la commande 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)
Pour les connexions à la base de données, il listera les tables et les vues disponibles. Pour les connexions de stockage, il répertorie les objets de fichiers non récursifs situés dans le dossier source spécifié. Pour les connexions SaaS/API, il listera tous les objets disponibles qui existent pour la consommation. Voici quelques exemples.
Connexions à la base de données
$ 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 nous voulons filtrer un shema spécifique, nous pouvons faire :
$ sling conns discover CLICKHOUSE --schema default
8:29PM INF Found 2 streams:
- "default"."docker_logs"
- "default"."sling_docker_logs"
Connexions SaaS
$ sling conns discover NOTION
6:58PM INF Found 4 streams:
- blocks
- databases
- pages
- users
connexions de stockage
$ 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 nous voulons voir les fichiers dans un sous-dossier, nous pouvons faire ceci :
$ 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
Exécution de tâches EL
Maintenant que vos connexions sont définies, vous êtes prêt à exécuter certaines tâches d'extraction et de chargement ! Nous couvrons cela en détail dans un article séparé, vous pouvez en savoir plus ici. Depuis la ligne de commande, vous pouvez également exécuter sling run -e
qui imprimera un tas d'exemples.
Conclusion
Tout bien considéré, Sling CLI facilite la gestion et l'interaction avec différents types de connexions à partir de votre shell. Si vous avez des questions ou des suggestions, n'hésitez pas à nous contacter ici. De plus, assurez-vous de consulter Sling Cloud, qui est un service cloud qui gère vos divers besoins d'extraction et de chargement à un modèle de tarification compétitif.