Перейти к основному содержимому

1 запись с тегом "connection"

Посмотреть все теги

· 6 мин. чтения
Fritz larco

фон

Введение в интерфейс командной строки Sling

Sling CLI — это инструмент командной строки, который позволяет легко и эффективно перемещать данные (извлечение и загрузка) из/в базы данных, платформы хранения и приложения SaaS. Начать работу несложно, вы можете просто запустить pip install sling, если у вас установлен pip Python. Или вы можете загрузить бинарный файл для своей машины [здесь] (https://docs.slingdata.io/sling-cli/getting-started).

Учетные данные подключения

Чтобы использовать sling, мы должны сначала настроить учетные данные для подключения, и Sling CLI ищет их в разных местах. Это позволяет использовать принцип «подключи и работай», если вы уже используете другой инструмент, такой как dbt, или URL-адреса подключения установлены в переменных среды. Однако рекомендуется использовать файл env.yaml Sling, поскольку он обеспечивает более последовательный и гибкий опыт.

Sling Env File

При первом запуске команды sling в домашнем каталоге текущего пользователя (.sling) создается папка ~/.sling, которая, в свою очередь, содержит файл с именем env.yaml. Структура файла Env Sling проста: вы помещаете учетные данные своих подключений под ключ connections, как показано ниже:

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

# или стиль профиля 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:
aws_access_key: '...'
aws_secret_key: '...'

См. здесь обо всех допустимых типах соединений и соответствующих необходимых точках данных.

При использовании команды sling conns list с учетными данными Sling Env столбец SOURCE будет отображаться как sling env yaml.

Переменные среды

Если вы предпочитаете использовать переменные среды, достаточно установить их в вашей среде оболочки обычным способом:

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

При использовании команды sling conns list с переменными среды столбец SOURCE будет отображаться как env variable.

профилей DBT

dbt — еще один популярный инструмент, который многие специалисты по данным используют ежедневно, а поддержка существующих локальных профилей упрощает перекрестное использование. Обычно учетные данные dbt находятся в файле ~/dbt/profiles.yml. Подробнее см. здесь.

Если у вас есть учетные данные dbt и вы используете команду sling conns list, столбец SOURCE будет отображаться как dbt profiles yaml.

Подкоманда conns

Теперь, когда вы установили учетные данные, sling предлагает подкоманду conns для взаимодействия с соединениями. Мы можем выполнять следующие операции: list, test и 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.

Список подключений

Удобно просматривать и перечислять все подключения, доступные в нашей среде. Мы можем просто запустить команду sling conns list. Вот пример:

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

Тестирование соединений

Инструмент Sling CLI также позволяет тестировать соединения. Как только мы узнаем имя соединения, мы можем использовать команду 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.

Вот реальный пример:

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

Обнаружение потоков подключения

Это еще одна полезная подкоманда, позволяющая увидеть, какие потоки данных доступны для sling, из которых считывается определенное соединение: команда 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)

Для подключений к базе данных будут перечислены доступные таблицы и представления. Для подключений к хранилищу будут перечислены нерекурсивные файловые объекты, расположенные в указанной исходной папке. Для подключений SaaS/API будут перечислены все доступные объекты, которые существуют для потребления. Ниже приведены некоторые примеры.

Соединения с базой данных

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

Если мы хотим отфильтровать определенную схему, мы можем сделать:

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

подключений SaaS

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

Подключения к хранилищу

$ 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

Если мы хотим увидеть файлы в подпапке, мы можем сделать это:

$ 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

Запуск задач EL

Теперь, когда ваши соединения установлены, вы готовы запустить некоторые задачи извлечения и загрузки! Мы подробно расскажем об этом в отдельном посте, вы можете прочитать об этом здесь. Из командной строки вы также можете запустить sling run -e, который напечатает кучу примеров.

Заключение

Учитывая все обстоятельства, интерфейс командной строки Sling упрощает управление и взаимодействие с различными типами соединений из вашей оболочки. Если у вас есть какие-либо вопросы или предложения, не стесняйтесь обращаться к нам [здесь] (https://slingdata.io/ru/contact). Кроме того, обязательно ознакомьтесь с [Sling Cloud] (https://slingdata.io/ru/), облачным сервисом, отвечающим вашим различным требованиям извлечения и загрузки по конкурентоспособной модели ценообразования.