Aller au contenu principal

Un article tagués avec « connector »

Voir tous les tags

· 7 minutes de lecture
Fritz larco

arrière-plan

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.