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

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

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

Синтаксис

Аргументы

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

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

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

Пример

к сведению

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

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

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

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

На данный момент с помощью CH вы можете читать таблицы 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, потому что CH пока не поддерживает запись в таблицы Iceberg.

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

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

Результаты запроса в различные временные штампы:

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

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

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

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

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

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

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

Псевдонимы

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

См. также