Skip to content

Чтение данных из 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.