Конфигурации Teradata
Общие
-
Установите
quote_columns
- чтобы избежать предупреждения, убедитесь, что вы явно задали значение дляquote_columns
в вашемdbt_project.yml
. Подробнее см. в документации по quote_columns.seeds:
+quote_columns: false #или `true`, если у вас есть заголовки столбцов csv с пробелами -
Включите типы столбцов представлений в документации - Teradata Vantage имеет флаг конфигурации dbscontrol под названием
DisableQVCI
. Этот флаг инструктирует базу данных создаватьDBC.ColumnsJQV
с определениями типов столбцов представлений. Чтобы включить эту функциональность, вам нужно:- Включить режим QVCI в Vantage. Используйте утилиту
dbscontrol
, а затем перезапустите Teradata. Выполните эти команды от имени привилегированного пользователя на узле Teradata:# опция 551 - это DisableQVCI. Установка в false включает QVCI.
dbscontrol << EOF
M internal 551=false
W
EOF
# перезапустите Teradata
tpareset -y Enable QVCI - Инструктируйте
dbt
использовать режимQVCI
. Включите следующую переменную в вашdbt_project.yml
:Пример конфигурации см. в dbt_project.yml в тестах QVCIvars:
use_qvci: truedbt-teradata
.
- Включить режим QVCI в Vantage. Используйте утилиту
Модели
-
table_kind
- определяет тип таблицы. Допустимые значения:MULTISET
(по умолчанию для режима транзакций ANSI, требуемогоdbt-teradata
) иSET
, например:- в файле определения материализации sql:
{{
config(
materialized="table",
table_kind="SET"
)
}} - в конфигурации seed:
seeds:
<project-name>:
table_kind: "SET"
Подробнее см. в документации CREATE TABLE.
- в файле определения материализации sql:
-
table_option
- определяет опции таблицы. Конфигурация поддерживает несколько операторов. Определение ниже использует синтаксис Teradata для объяснения допустимых операторов. Квадратные скобки[]
обозначают необязательные параметры. Символ вертикальной черты|
разделяет операторы. Используйте запятые для объединения нескольких операторов, как показано в примерах ниже:{ MAP = map_name [COLOCATE USING colocation_name] |
[NO] FALLBACK [PROTECTION] |
WITH JOURNAL TABLE = table_specification |
[NO] LOG |
[ NO | DUAL ] [BEFORE] JOURNAL |
[ NO | DUAL | LOCAL | NOT LOCAL ] AFTER JOURNAL |
CHECKSUM = { DEFAULT | ON | OFF } |
FREESPACE = integer [PERCENT] |
mergeblockratio |
datablocksize |
blockcompression |
isolated_loading
}где:
- mergeblockratio:
{ DEFAULT MERGEBLOCKRATIO |
MERGEBLOCKRATIO = integer [PERCENT] |
NO MERGEBLOCKRATIO
} - datablocksize:
DATABLOCKSIZE = {
data_block_size [ BYTES | KBYTES | KILOBYTES ] |
{ MINIMUM | MAXIMUM | DEFAULT } DATABLOCKSIZE
} - blockcompression:
BLOCKCOMPRESSION = { AUTOTEMP | MANUAL | ALWAYS | NEVER | DEFAULT }
[, BLOCKCOMPRESSIONALGORITHM = { ZLIB | ELZS_H | DEFAULT } ]
[, BLOCKCOMPRESSIONLEVEL = { value | DEFAULT } ] - isolated_loading:
WITH [NO] [CONCURRENT] ISOLATED LOADING [ FOR { ALL | INSERT | NONE } ]
Примеры:
- в файле определения материализации sql:
{{
config(
materialized="table",
table_option="NO FALLBACK"
)
}}{{
config(
materialized="table",
table_option="NO FALLBACK, NO JOURNAL"
)
}}{{
config(
materialized="table",
table_option="NO FALLBACK, NO JOURNAL, CHECKSUM = ON,
NO MERGEBLOCKRATIO,
WITH CONCURRENT ISOLATED LOADING FOR ALL"
)
}} - в конфигурации seed:
seeds:
<project-name>:
table_option:"NO FALLBACK"seeds:
<project-name>:
table_option:"NO FALLBACK, NO JOURNAL"seeds:
<project-name>:
table_option: "NO FALLBACK, NO JOURNAL, CHECKSUM = ON,
NO MERGEBLOCKRATIO,
WITH CONCURRENT ISOLATED LOADING FOR ALL"
Подробнее см. в документации CREATE TABLE.
- mergeblockratio:
-
with_statistics
- следует ли копировать статистику из базовой таблицы, например:{{
config(
materialized="table",
with_statistics="true"
)
}}Подробнее см. в документации CREATE TABLE.
-
index
- определяет индексы таблицы:[UNIQUE] PRIMARY INDEX [index_name] ( index_column_name [,...] ) |
NO PRIMARY INDEX |
PRIMARY AMP [INDEX] [index_name] ( index_column_name [,...] ) |
PARTITION BY { partitioning_level | ( partitioning_level [,...] ) } |
UNIQUE INDEX [ index_name ] [ ( index_column_name [,...] ) ] [loading] |
INDEX [index_name] [ALL] ( index_column_name [,...] ) [ordering] [loading]
[,...]где:
- partitioning_level:
{ partitioning_expression |
COLUMN [ [NO] AUTO COMPRESS |
COLUMN [ [NO] AUTO COMPRESS ] [ ALL BUT ] column_partition ]
} [ ADD constant ] - ordering:
ORDER BY [ VALUES | HASH ] [ ( order_column_name ) ]
- loading:
WITH [NO] LOAD IDENTITY
Примеры:
- в файле определения материализации sql:
{{
config(
materialized="table",
index="UNIQUE PRIMARY INDEX ( GlobalID )"
)
}}ℹ️ Обратите внимание, в отличие от
table_option
, между операторами индекса нет запятых!{{
config(
materialized="table",
index="PRIMARY INDEX(id)
PARTITION BY RANGE_N(create_date
BETWEEN DATE '2020-01-01'
AND DATE '2021-01-01'
EACH INTERVAL '1' MONTH)"
)
}}{{
config(
materialized="table",
index="PRIMARY INDEX(id)
PARTITION BY RANGE_N(create_date
BETWEEN DATE '2020-01-01'
AND DATE '2021-01-01'
EACH INTERVAL '1' MONTH)
INDEX index_attrA (attrA) WITH LOAD IDENTITY"
)
}} - в конфигурации seed:
seeds:
<project-name>:
index: "UNIQUE PRIMARY INDEX ( GlobalID )"ℹ️ Обратите внимание, в отличие от
table_option
, между операторами индекса нет запятых!seeds:
<project-name>:
index: "PRIMARY INDEX(id)
PARTITION BY RANGE_N(create_date
BETWEEN DATE '2020-01-01'
AND DATE '2021-01-01'
EACH INTERVAL '1' MONTH)"seeds:
<project-name>:
index: "PRIMARY INDEX(id)
PARTITION BY RANGE_N(create_date
BETWEEN DATE '2020-01-01'
AND DATE '2021-01-01'
EACH INTERVAL '1' MONTH)
INDEX index_attrA (attrA) WITH LOAD IDENTITY"
- partitioning_level: