[Документация Yandex Cloud](../../index.md) > [Yandex Query](../index.md) > Источники и приемники данных > Чтение данных из таблиц Iceberg

# Чтение данных из таблиц Iceberg

В этом разделе описана основная информация о работе с таблицами Iceberg.

Для чтения данных из таблицы Iceberg, расположенной в Yandex Object Storage, необходимо выполнить следующие шаги:
1. Создать [соединение](../concepts/glossary.md#connection), содержащее реквизиты для подключения к каталогу Iceberg.
1. [Выполнить запрос](#query) к требуемой таблице из каталога.

Пример запроса, выполняющего чтение данных из таблицы Iceberg:

```
SELECT * FROM iceberg_connection.my_table
```
Где:

* `iceberg_connection` — название созданного соединения с каталогом Iceberg.
* `my_table` — имя таблицы в каталоге Iceberg.

## Настройка соединения {#create_connection}

Чтобы создать соединение с каталогом Iceberg:

1. В [консоли управления](https://console.yandex.cloud) выберите каталог, в котором нужно создать соединение.
1. Перейдите в сервис **Yandex Query**.
1. На панели слева перейдите на вкладку **Соединения**.
1. Нажмите кнопку ![info](../../_assets/console-icons/plus.svg) **Создать**.
1. Укажите параметры соединения:

   1. В блоке **Общие параметры**:

      * **Имя** — название соединения с каталогом Iceberg.
      * **Тип** — Iceberg.
  
   1. В блоке **Параметры типа соединения**:

      * **Аутентификация бакета** — выберите `Публичный` или `Приватный` в зависимости от типа доступа к чтению объектов в бакете.

        Для публичного бакета введите имя в поле **Бакет**.
        Для приватного бакета:
        * Выберите **Облако и каталог**, в котором находится источник данных.
        * Выберите или создайте новый бакет.
        * Выберите или создайте новый [сервисный аккаунт](../../iam/concepts/users/service-accounts.md) с ролью [`storage.viewer`](../../storage/security/index.md#storage-viewer), от имени которого будет осуществляться доступ к данным.

          Чтобы использовать сервисный аккаунт, пользователю нужна [роль](../../iam/security/index.md#iam-serviceAccounts-user) `iam.serviceAccounts.user`.
      * **Директория** — директория с каталогом Hadoop в выбранном бакете.

1. Нажмите кнопку **Создать**.

## Синтаксис запросов {#query}

Для работы с таблицами Iceberg используется следующая форма SQL-запроса:

```
SELECT * FROM <соединение>.<имя_таблицы>
```

Где:
* `<соединение>` — название созданного соединения с каталогом.
* `<имя_таблицы>` — имя таблицы Iceberg из каталога.

## Ограничения

При работе с таблицами Iceberg существует ряд ограничений:
* Можно выполнять запросы только к таблицам, созданным в соответствии с [версией 1](https://iceberg.apache.org/spec/#version-1-analytic-data-tables) спецификации Iceberg.
* Чтение таблиц возможно только из каталога Hadoop, размещенного в Yandex Object Storage.
* Не поддерживается чтение предыдущих состояний (снапшотов) таблицы (time travel).

## Поддерживаемые типы данных

Перечень поддерживаемых типов данных Iceberg и соответствующие им типы YQL.

| Тип данных Iceberg | Тип данных Yandex Query |
| :---: | :---: | 
| `boolean` | `Bool` |
| `int` | `Int32` |
| `long` | `Int64` |
| `float` | `Float` |
| `double` | `Double` |
| `date` | `Date` |
| `time` | `Utf8` |
| `timestamp` | `Utf8` |
| `string` | `Utf8` |
| `binary` | `String` |

## Выделение значимой части данных (pruning)

Запрос к таблице Iceberg может содержать фильтры, которые строятся на основе WHERE-выражения. Эти фильтры используются для сокращения объема данных, требующих обработки. Процедура сокращения называется _выделение значимой части данных_ или _отсечение лишних данных_ (pruning).

Отсечение лишних данных выполняется как на этапе планирования операции чтения, так и на этапе чтения.

На этапе планирования:
* считывается метаинформация таблицы Iceberg;
* определяется перечень файлов данных, требующих чтения (на основе статистики из метаданных);
* передаются отобранные файлы для чтения.

На этапе чтения: 
* файлы данных разбиваются на строковые группы (row groups);
* считывается статистика для строковых групп (row groups);
* определяется перечень групп, требующих чтения (на основе статистики);
* выполняется чтение данных из отобранных групп.