Конфигурации Amazon Athena
Модели
Конфигурация таблицы
Параметр | По умолчанию | Описание |
---|---|---|
external_location | None | Полный путь S3, где сохраняется таблица. Работает только с инкрементальными моделями. Не работает с таблицами Hive, если ha установлено в true . |
partitioned_by | None | Список столбцов, по которым будет разбита таблица. В настоящее время ограничено 100 разделами. |
bucketed_by | None | Список столбцов для распределения данных по корзинам. Игнорируется при использовании Iceberg. |
bucket_count | None | Количество корзин для распределения данных. Этот параметр игнорируется при использовании Iceberg. |
table_type | Hive | Тип таблицы. Поддерживает hive или iceberg . |
ha | False | Создание таблицы с использованием метода высокой доступности. Доступно только для таблиц Hive. |
format | Parquet | Формат данных для таблицы. Поддерживает ORC , PARQUET , AVRO , JSON и TEXTFILE . |
write_compression | None | Тип сжатия для любого формата хранения, который поддерживает сжатие. |
field_delimeter | None | Укажите пользовательский разделитель полей, который будет использоваться, когда формат установлен в TEXTFILE . |
table_properties | N/A | Свойства таблицы, которые нужно добавить к таблице. Это только для Iceberg. |
native_drop | N/A | Операции удаления отношений будут выполняться с помощью SQL, а не прямых вызовов API Glue. Вызовы S3 не будут выполняться для управления данными в S3. Данные в S3 будут очищены только для таблиц Iceberg. Подробнее см. в документации AWS. Операции DROP TABLE в Iceberg могут завершиться по тайм-ауту, если они длятся более 60 секунд. |
seed_by_insert | False | Создает начальные данные с использованием SQL-оператора вставки. Большие файлы начальных данных не могут превышать лимит Athena в 262144 байт. |
force_batch | False | Запуск создания таблицы напрямую в режиме пакетной вставки. Полезно, когда стандартное создание таблицы не удается из-за ограничения на разделы. |
unique_tmp_table_suffix | False | Заменяет суффикс "__dbt_tmp table" на уникальный UUID для инкрементальных моделей, использующих вставку с перезаписью в таблицах Hive. |
temp_schema | None | Определяет схему для хранения временных операторов создания, используемых в инкрементальных запусках моделей. Схема будет создана в целевой базе данных моделей, если она не существует. |
lf_tags_config | None | Теги AWS Lake Formation, которые нужно связать с таблицей и столбцами. Существующие теги будут удалены. * enabled (default=False ) указывает, включено ли управление тегами LF для модели * tags словарь с тегами и их значениями для назначения модели * tags_columns словарь с ключом тега, значением и списком столбцов, к которым они должны быть назначены |
lf_inherited_tags | None | Список ключей тегов Lake Formation, которые должны быть унаследованы на уровне базы данных и не должны удаляться при назначении тех, что определены в ls_tags_config . |
lf_grants | None | Конфигурация грантов Lake Formation для фильтров data_cell . |
Примеры конфигурации
- schema.yml
- dbt_project.yml
- Lake formation grants
models/schema.yml
{{
config(
materialized='incremental',
incremental_strategy='append',
on_schema_change='append_new_columns',
table_type='iceberg',
schema='test_schema',
lf_tags_config={
'enabled': true,
'tags': {
'tag1': 'value1',
'tag2': 'value2'
},
'tags_columns': {
'tag1': {
'value1': ['column1', 'column2'],
'value2': ['column3', 'column4']
}
},
'inherited_tags': ['tag1', 'tag2']
}
)
}}
dbt_project.yml
+lf_tags_config:
enabled: true
tags:
tag1: value1
tag2: value2
tags_columns:
tag1:
value1: [ column1, column2 ]
inherited_tags: [ tag1, tag2 ]
lf_grants={
'data_cell_filters': {
'enabled': True | False,
'filters': {
'filter_name': {
'row_filter': '<filter_condition>',
'principals': ['principal_arn1', 'principal_arn2']
}
}
}
}
Существуют некоторые ограничения и рекомендации, которые следует учитывать:
- Конфигурации
lf_tags
иlf_tags_columns
поддерживают только прикрепление тегов LF к соответствующим ресурсам. - Мы рекомендуем управлять разрешениями LF Tags вне dbt. Например, с помощью terraform или aws cdk.
- Управление
data_cell_filters
не может быть автоматизировано вне dbt, потому что фильтр не может быть прикреплен к таблице, которая не существует. Как только выenable
эту конфигурацию, dbt установит все фильтры и их разрешения во время каждого запуска dbt. Такой подход сохраняет актуальное состояние конфигурации безопасности на уровне строк после каждого запуска dbt и применяет изменения, если они происходят: удаление, создание и обновление фильтров и их разрешений. - Любые теги, перечисленные в
lf_inherited_tags
, должны строго наследоваться на уровне базы данных и никогд а не переопределяться на уровне таблицы и столбца. - В настоящее время
dbt-athena
не различает ассоциацию унаследованного тега и переопределение, сделанное ранее.- Например, если значение
lf_tags_config
переопределяет унаследованный тег в одном запуске, и это переопределение удаляется перед последующим запуском, предыдущее переопределение останется и больше не будет закодировано нигде (например, в Terraform, где унаследованное значение настроено, или в проекте DBT, где переопределение ранее существовало, но теперь исчезло).
- Например, если значение
Расположение таблицы
Сохраненное расположение таблицы определяется в порядке приоритета следующими условиями:
- Если
external_location
определено, используется это значение. - Если
s3_data_dir
определено, путь определяется этим значением иs3_data_naming
. - Если
s3_data_dir
не определено, данные хранятся вs3_staging_dir/tables/
.