Pular para o conteúdo principal

Uma postagem marcadas com "connector"

Ver todas os Marcadores

· Leitura de 6 minutos
Fritz larco

background

Introdução ao Sling CLI

Sling CLI é uma ferramenta de linha de comando que permite a movimentação fácil e eficiente de dados (Extrair e Carregar) de/para Bancos de Dados, Plataformas de Armazenamento e aplicativos SaaS. É trivial começar, você pode simplesmente executar pip install sling se tiver o pip do Python instalado. Ou você pode baixar o binário para sua máquina aqui.

Credenciais de Conexão

Para usar sling, devemos primeiro configurar as credenciais de conexão, e o Sling CLI as procura em vários lugares. Isso permite uma natureza “plug & play” se você já estiver usando outra ferramenta, como dbt, ou tiver URLs de conexão definidos em variáveis ​​de ambiente. No entanto, é recomendável usar o arquivo env.yaml do Sling, pois permite uma experiência mais consistente e flexível.

Arquivo Env Sling

Na primeira vez que você executa o comando sling, a pasta .sling é criada no diretório inicial do usuário atual (~/.sling), que por sua vez contém um arquivo chamado env.yaml. A estrutura do arquivo Env do Sling é simples, você coloca a credencial de suas conexões na chave connections conforme mostrado abaixo:

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

# ou perfil dbt estilizado
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]

# variáveis ​​globais, disponíveis para todas as conexões em tempo de execução (opcional)
variables:
aws_access_key: '...'
aws_secret_key: '...'

Consulte aqui para todos os tipos de conexão aceitos e seus respectivos pontos de dados necessários.

Ao usar o comando sling conns list com credenciais Sling Env, a coluna SOURCE será exibida como sling env yaml.

Variáveis ​​de ambiente

Se você preferir usar variáveis ​​de ambiente, basta defini-las em seu ambiente de shell da maneira usual:

# 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'

Ao usar o comando sling conns list com variáveis ​​de ambiente, a coluna SOURCE será exibida como env variable.

Perfis DBT

dbt é outra ferramenta popular que muitos profissionais de dados usam diariamente, e o suporte a perfis locais existentes facilita o uso cruzado. A localização típica das credenciais dbt está no arquivo ~/dbt/profiles.yml. Veja aqui para mais detalhes.

Se você tiver credenciais dbt e usar o comando sling conns list, a coluna SOURCE será exibida como dbt profiles yaml.

O subcomando conns

Agora que você definiu as credenciais, o sling oferece um subcomando conns para interagir com as conexões. Podemos realizar as seguintes operações: list, test e 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.

Listando Conexões

É conveniente ver e listar todas as conexões disponíveis em nosso ambiente. Podemos simplesmente executar o comando sling conns list. Aqui está um exemplo:

$ 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 |
+----------------------+------------------+-------------------+

Testando Conexões

A ferramenta Sling CLI também permite testar conexões. Assim que soubermos o nome da conexão, podemos usar o 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.

Aqui está um exemplo real:

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

Descobrindo fluxos de conexão

Este é outro subcomando bacana que permite ver quais fluxos de dados estão disponíveis para que sling seja lido para uma conexão específica: o 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 conexões de banco de dados, listará as tabelas e visualizações disponíveis. Para conexões de armazenamento, ele listará os objetos de arquivo não recursivos localizados na pasta de origem especificada. Para conexões SaaS/API, ele listará todos os objetos disponíveis que existem para consumo. Abaixo estão alguns exemplos.

Conexões de Banco de Dados

$ 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"
....

Se quisermos filtrar por um shema específico, podemos fazer:

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

Conexões SaaS

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

Conexões de Armazenamento

$ 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

Se quisermos ver os arquivos em uma subpasta, podemos fazer isso:

$ 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

Executando Tarefas EL

Agora que suas conexões estão definidas, você está pronto para executar algumas tarefas de extração e carregamento! Cobrimos isso em detalhes em um post separado, você pode ler sobre isso aqui. Na linha de comando, você também pode executar sling run -e, que imprimirá vários exemplos.

Conclusão

Considerando tudo, o Sling CLI facilita o gerenciamento e a interação com vários tipos de conexões do seu shell. Se você tiver alguma dúvida ou sugestão, sinta-se à vontade para entrar em contato conosco aqui. Além disso, certifique-se de conferir o Sling Cloud, que é um serviço de nuvem que lida com suas várias necessidades de extração e carregamento em um modelo de preços competitivo.