Работа с СУБД
Содержание
На этой странице собраны практические сценарии работы с источниками данных из ноутбука.
Когда использовать
- нужно выполнить SQL к подключенной СУБД;
- нужно быстро проверить выборку перед дальнейшей обработкой;
- нужно явно контролировать, к какому источнику уходит запрос.
SQL-ячейки
sql-ячейки подходят для быстрых запросов к выбранному подключению.
Это хороший вариант для проверки SQL и первичной диагностики данных.
Для отправки запроса необходимо выбрать подключение к БД в селекторе ячейки.
Python
sq.query()
В Python-ячейках используйте:
df = await sq.query("select now() as ts")df.head()
sq.query выполняет SQL на сервере и возвращает pandas.DataFrame.
Аргументы подключения: connection_name и connection_id
Сигнатура метода:
await sq.query(sql, connection_name=None, connection_id=None)
- Всегда вызывайте метод с await;
connection_nameилиconnection_idпозволяют выбрать к какой БД произойдет обращение;- передавать оба аргумента одновременно нельзя;
- если оба аргумента не переданы, используется активное подключение ячейки.
Пример с явным подключением:
df = await sq.query( "select count(*) as cnt from analytics.orders", connection_name="prod_clickhouse")
sq.insert_df()
Обратная операция к sq.query: загружает pandas.DataFrame в таблицу на выбранном подключении. Данные передаются в формате parquet через сервер SubQuery — без прямого доступа из браузера к СУБД, с тем же контуром прав, что и у sq.query.
result = await sq.insert_df("analytics.orders_checked", df)result
На выходе — pandas.DataFrame с количеством вставленных строк:
rows_inserted0 184
Сигнатура метода:
await sq.insert_df(table, df, column_names=None, connection_name=None, connection_id=None)
table— имя таблицы на подключении (например,analytics.orders_checked);df—pandas.DataFrameс данными; не должен быть пустым;column_names— необязательный список колонокdf, которые нужно вставить;connection_name/connection_id— те же правила, что и уsq.query.
Пример с выбором колонок и явным подключением:
await sq.insert_df( "analytics.orders_checked", df_merged, column_names=["date", "amount"], connection_name="prod_clickhouse",)
Ограничения:
- объём загружаемых данных — до 200 МБ в parquet;
sq.insert_dfвставляет строки в указанную таблицу — для массовых загрузок используйте штатные механизмы вашей СУБД, а этот метод держите для результатов исследования и выгрузок, с которыми уже поработали в ноутбуке.
DuckDB-ячейки
duckdb-ячейки подходят для локальных SQL-операций в браузерной WASM-сессии.
Когда это удобно:
- быстро проверить идею без обращения к внешней СУБД;
- сделать промежуточные преобразования перед Python-обработкой;
- работать с локальными файлами через SQL.
Пример:
select *from read_csv_auto('sales.csv')limit 100
Важно учитывать: состояние DuckDB-сессии живет в рамках текущей вкладки браузера.