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

iceberg Функция Таблицы

Предоставляет интерфейс, похожий на таблицу, только для чтения для таблиц Apache Iceberg в Amazon S3, Azure, HDFS или установленным локально.

Синтаксис

Аргументы

Описание аргументов совпадает с описанием аргументов в функциях таблиц s3, azureBlobStorage, HDFS и file соответственно. формат обозначает формат файлов данных в таблице Iceberg.

Возвращаемое значение

Таблица со структурой, указанной для чтения данных в указанной таблице Iceberg.

Пример

к сведению

ClickHouse в настоящее время поддерживает чтение форматов v1 и v2 Iceberg через функции таблиц icebergS3, icebergAzure, icebergHDFS и icebergLocal, а также движки таблиц IcebergS3, icebergAzure, IcebergHDFS и IcebergLocal.

Определение именованной коллекции

Вот пример настройки именованной коллекции для хранения URL и учетных данных:

Эволюция схемы

В данный момент с помощью ClickHouse можно читать таблицы Iceberg, схема которых изменялась со временем. Мы в настоящее время поддерживаем чтение таблиц, в которых столбцы были добавлены и удалены, а их порядок изменен. Вы также можете изменить столбец, в котором значение является обязательным, на столбец, где значение NULL допускается. Кроме того, мы поддерживаем допустимое приведение типов для простых типов, а именно:

  • int -> long
  • float -> double
  • decimal(P, S) -> decimal(P', S) где P' > P.

В настоящее время невозможно изменить вложенные структуры или типы элементов внутри массивов и карт.

Обрезка партиций

ClickHouse поддерживает обрезку партиций во время запросов SELECT для таблиц Iceberg, что помогает оптимизировать производительность запросов, пропуская неактуальные файлы данных. В настоящее время это работает только с идентичными преобразованиями и временными преобразованиями (час, день, месяц, год). Чтобы включить обрезку партиций, установите use_iceberg_partition_pruning = 1.

Перемещение во времени

ClickHouse поддерживает перемещение во времени для таблиц Iceberg, позволяя вам выполнять запросы к историческим данным с определенной временной меткой или идентификатором снимка.

Основное использование

Примечание: Вы не можете указать как iceberg_timestamp_ms, так и iceberg_snapshot_id параметры в одном запросе.

Важные соображения

  • Снимки обычно создаются, когда:

    • Новые данные записываются в таблицу
    • Выполняется какое-то сжатие данных
  • Изменения схемы обычно не создают снимки - это приводит к важным поведениям при использовании перемещения во времени с таблицами, которые претерпели эволюцию схемы.

Примерные сценарии

Все сценарии написаны в Spark, потому что ClickHouse пока не поддерживает запись в таблицы Iceberg.

Сценарий 1: Изменения схемы без новых снимков

Рассмотрим эту последовательность операций:

Результаты запросов на разных временных метках:

  • На ts1 и ts2: Появляются только исходные два столбца
  • На ts3: Все три столбца появляются, при этом цена первого ряда равна NULL

Сценарий 2: Различия в исторической и текущей схеме

Запрос о перемещении во времени в текущий момент может показать другую схему, чем текущая таблица:

Это происходит потому, что ALTER TABLE не создает новый снимок, а для текущей таблицы Spark берет значение schema_id из последнего файла метаданных, а не из снимка.

Сценарий 3: Различия в исторической и текущей схеме

Второй момент заключается в том, что при перемещении во времени вы не можете получить состояние таблицы до того, как в нее были записаны какие-либо данные:

В ClickHouse поведение согласуется с Spark. Вы можете мысленно заменить запросы Select из Spark на запросы Select из ClickHouse, и это будет работать так же.

Псевдонимы

Функция таблицы iceberg в настоящее время является псевдонимом для icebergS3.

См. также