Введение в интерфейс командной строки 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/), облачным сервисом, отвечающим вашим различным требованиям извлечения и загрузки по конкурентоспособной модели ценообразования.