Чтение данных из Iceberg используя Iceberg.sql
Файл Iceberg.sql позволяет передавать пользовательские SQL-запросы, но не поддерживает инкрементальные стратегии.
Warning
В отличие от DBReader, в SQL-запросах имена таблиц должны включать префикс каталога.
Поддержка синтаксиса
Поддерживаются только запросы со следующим синтаксисом:
- ✅︎
SELECT ... FROM ... - ✅︎
WITH alias AS (...) SELECT ... - ❌
SET ...; SELECT ...;- поддержка множественных операторов отсутствует
Примеры
from onetl.connection import Iceberg
iceberg = Iceberg(catalog_name="my_catalog", ...)
df = iceberg.sql(
"""
SELECT
id,
key,
CAST(value AS string) value,
updated_at
FROM
my_catalog.my_schema.my_table
WHERE
key = 'something'
""",
)
Рекомендации
Выберите только необходимые столбцы
Избегайте использования SELECT *. Перечисляйте только необходимые столбцы, чтобы минимизировать операции ввода-вывода и повысить производительность запроса.
Используйте фильтры
Добавьте условия WHERE для столбцов, чтобы Spark мог удалять ненужные данные, например, операторы =, >, <, BETWEEN.