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

Конфигурации Upsolver

Поддерживаемая функциональность Upsolver SQLake

КОМАНДАСОСТОЯНИЕМАТЕРИАЛИЗОВАНО
SQL вычислительный кластерне поддерживается-
SQL соединенияподдерживаетсяconnection
SQL копирование заданияподдерживаетсяincremental
SQL слияние заданияподдерживаетсяincremental
SQL вставка заданияподдерживаетсяincremental
SQL материализованные представленияподдерживаетсяmaterializedview
Ожиданияподдерживаетсяincremental

Материализация конфигураций

КонфигурацияОбязательноМатериализацияОписаниеПример
connection_typeДаconnectionИдентификатор соединения: S3/GLUE_CATALOG/KINESISconnection_type='S3'
connection_optionsДаconnectionСловарь опций, поддерживаемых выбранным соединениемconnection_options={ 'aws_role': 'aws_role', 'external_id': 'SAMPLES', 'read_only': True }
incremental_strategyНетincrementalОпределите одну из стратегий инкрементного обновления: merge/copy/insert. По умолчанию: copyincremental_strategy='merge'
sourceНетincrementalОпределите источник для копирования: S3/KAFKA/KINESISsource = 'S3'
target_typeНетincrementalОпределите тип цели REDSHIFT/ELASTICSEARCH/S3/SNOWFLAKE/POSTGRES. По умолчанию None для Data laketarget_type='Snowflake'
target_prefixНетincrementalОпределите ПРЕФИКС для типа цели ELASTICSEARCHtarget_prefix = 'orders'
target_locationНетincrementalОпределите ЛОКАЦИЮ для типа цели S3target_location = 's3://your-bucket-name/path/to/folder/'
schemaДа/НетincrementalОпределите схему цели. Обязательно, если target_type, таблица не создается в соединении метахранилищаschema = 'target_schema'
databaseДа/НетincrementalОпределите соединение цели. Обязательно, если target_type, таблица не создается в соединении метахранилищаdatabase = 'target_connection'
aliasДа/НетincrementalОпределите таблицу цели. Обязательно, если target_type, таблица не создается в соединении метахранилищаalias = 'target_table'
delete_conditionНетincrementalЗаписи, которые соответствуют условию ON и условию удаления, могут быть удаленыdelete_condition='nettotal > 1000'
partition_byНетincrementalСписок словарей для определения partition_by для таблицы метахранилища целиpartition_by=[{'field':'$field_name'}]
primary_keyНетincrementalСписок словарей для определения partition_by для таблицы метахранилища целиprimary_key=[{'field':'customer_email', 'type':'string'}]
map_columns_by_nameНетincrementalСоответствует столбцам из оператора SELECT таблице. Логическое значение. По умолчанию: Falsemap_columns_by_name=True
syncНетincremental/materializedviewЛогическая опция для определения, синхронизировано ли задание или нет. По умолчанию: Falsesync=True
optionsНетincremental/materializedviewСловарь опций заданияoptions={ 'START_FROM': 'BEGINNING', 'ADD_MISSING_COLUMNS': True }

SQL соединение

Соединения используются для предоставления Upsolver правильных учетных данных для загрузки ваших данных в SQLake, а также для записи преобразованных данных в различные сервисы. Подробнее о "Upsolver SQL соединениях" В dbt модель соединения - это модель с materialized='connection'

{{ config(
materialized='connection',
connection_type={ 'S3' | 'GLUE_CATALOG' | 'KINESIS' | 'KAFKA'| 'SNOWFLAKE' },
connection_options={}
)
}}

Запуск этой модели скомпилирует SQL CREATE CONNECTION (или ALTER CONNECTION, если существует) и отправит его в движок Upsolver. Имя соединения будет именем модели.

SQL копирование задания

Задание COPY FROM позволяет копировать ваши данные из заданного источника в таблицу, созданную в соединении метахранилища. Эта таблица затем служит вашей промежуточной таблицей и может использоваться с заданиями трансформации SQLake для записи в различные целевые местоположения. Подробнее о "Upsolver SQL copy-from"

В dbt модель копирования задания - это модель с materialized='incremental'

{{ config(  materialized='incremental',
sync=True|False,
source = 'S3'| 'KAFKA' | ... ,
options={
'option_name': 'option_value'
},
partition_by=[{}]
)
}}
SELECT * FROM {{ ref(<model>) }}

Запуск этой модели скомпилирует SQL CREATE TABLE для типа цели Data lake (или ALTER TABLE, если существует) и SQL CREATE COPY JOB (или ALTER COPY JOB, если существует) и отправит его в движок Upsolver. Имя таблицы будет именем модели. Имя задания будет именем модели плюс '_job'

SQL вставка задания

Задание INSERT определяет запрос, который извлекает набор данных на основе заданного оператора SELECT и вставляет его в назначенную цель. Этот запрос затем выполняется периодически на основе RUN_INTERVAL, определенного в задании. Подробнее о "Upsolver SQL insert".

В dbt модель вставки задания - это модель с materialized='incremental' и incremental_strategy='insert'

{{ config(  materialized='incremental',
sync=True|False,
map_columns_by_name=True|False,
incremental_strategy='insert',
options={
'option_name': 'option_value'
},
primary_key=[{}]
)
}}
SELECT ...
FROM {{ ref(<model>) }}
WHERE ...
GROUP BY ...
HAVING COUNT(DISTINCT orderid::string) ...

Запуск этой модели скомпилирует SQL CREATE TABLE для типа цели Data lake (или ALTER TABLE, если существует) и SQL CREATE INSERT JOB (или ALTER INSERT JOB, если существует) и отправит его в движок Upsolver. Имя таблицы будет именем модели. Имя задания будет именем модели плюс '_job'

SQL слияние задания

Задание MERGE определяет запрос, который извлекает набор данных на основе заданного оператора SELECT и вставляет, заменяет или удаляет данные из назначенной цели на основе определения задания. Этот запрос затем выполняется периодически на основе RUN_INTERVAL, определенного в задании. Подробнее о "Upsolver SQL merge".

В dbt модель слияния задания - это модель с materialized='incremental' и incremental_strategy='merge'

{{ config(  materialized='incremental',
sync=True|False,
map_columns_by_name=True|False,
incremental_strategy='merge',
options={
'option_name': 'option_value'
},
primary_key=[{}]
)
}}
SELECT ...
FROM {{ ref(<model>) }}
WHERE ...
GROUP BY ...
HAVING COUNT ...

Запуск этой модели скомпилирует SQL CREATE TABLE для типа цели Data lake (или ALTER TABLE, если существует) и SQL CREATE MERGE JOB (или ALTER MERGE JOB, если существует) и отправит его в движок Upsolver. Имя таблицы будет именем модели. Имя задания будет именем модели плюс '_job'

SQL материализованные представления

При преобразовании данных вы можете обнаружить, что вам нужны данные из нескольких исходных таблиц для достижения желаемого результата. В таком случае вы можете создать материализованное представление из одной таблицы SQLake, чтобы объединить его с другой таблицей (которая в этом случае считается основной таблицей). Подробнее о "Upsolver SQL материализованные представления".

В dbt модель материализованных представлений - это модель с materialized='materializedview'.

{{ config(  materialized='materializedview',
sync=True|False,
options={'option_name': 'option_value'}
)
}}
SELECT ...
FROM {{ ref(<model>) }}
WHERE ...
GROUP BY ...

Запуск этой модели скомпилирует SQL CREATE MATERIALIZED VIEW (или ALTER MATERIALIZED VIEW, если существует) и отправит его в движок Upsolver. Имя materializedview будет именем модели.

Ожидания/ограничения

Условия качества данных могут быть добавлены в ваше задание, чтобы удалить строку или вызвать предупреждение, когда столбец нарушает предопределенное условие.

WITH EXPECTATION <expectation_name> EXPECT <sql_predicate>
ON VIOLATION WARN

Ожидания могут быть реализованы с помощью ограничений dbt Поддерживаемые ограничения: check и not_null

models:
- name: <model name>
# обязательно
config:
contract:
enforced: true
# ограничения на уровне модели
constraints:
- type: check
columns: ['<column1>', '<column2>']
expression: "column1 <= column2"
name: <constraint_name>
- type: not_null
columns: ['column1', 'column2']
name: <constraint_name>

columns:
- name: <column3>
data_type: string

# ограничения на уровне столбца
constraints:
- type: not_null
- type: check
expression: "REGEXP_LIKE(<column3>, '^[0-9]{4}[a-z]{5}$')"
name: <constraint_name>

Примеры проектов

ссылка на примеры проектов: github.com/dbt-upsolver/examples/

Опции соединения

ОпцияХранилищеРедактируемоНеобязательноСинтаксис конфигурации
aws_roles3ДаДа'aws_role': '<aws_role>'
external_ids3ДаДа'external_id': '<external_id>'
aws_access_key_ids3ДаДа'aws_access_key_id': '<aws_access_key_id>'
aws_secret_access_keys3ДаДа'aws_secret_access_key_id': '<aws_secret_access_key_id>'
path_display_filters3ДаДа'path_display_filter': '<path_display_filter>'
path_display_filterss3ДаДа'path_display_filters': ('<filter>', ...)
read_onlys3ДаДа'read_only': True/False
encryption_kms_keys3ДаДа'encryption_kms_key': '<encryption_kms_key>'
encryption_customer_managed_keys3ДаДа'encryption_customer_kms_key': '<encryption_customer_kms_key>'
comments3ДаДа'comment': '<comment>'
hostkafkaНетНет'host': '<host>'
hostskafkaНетНет'hosts': ('<host>', ...)
consumer_propertieskafkaДаДа'consumer_properties': '<consumer_properties>'
versionkafkaНетДа'version': '<value>'
require_static_ipkafkaДаДа'require_static_ip': True/False
sslkafkaДаДа'ssl': True/False
topic_display_filterkafkaДаДа'topic_display_filter': '<topic_display_filter>'
topic_display_filterskafkaДаДа'topic_display_filter': ('<filter>', ...)
commentkafkaДаДа'comment': '<comment>'
aws_roleglue_catalogДаДа'aws_role': '<aws_role>'
external_idglue_catalogДаДа'external_id': '<external_id>'
aws_access_key_idglue_catalogДаДа'aws_access_key_id': '<aws_access_key_id>'
aws_secret_access_keyglue_catalogДаДа'aws_secret_access_key': '<aws_secret_access_key>'
default_storage_connectionglue_catalogНетНет'default_storage_connection': '<default_storage_connection>'
default_storage_locationglue_catalogНетНет'default_storage_location': '<default_storage_location>'
regionglue_catalogНетДа'region': '<region>'
database_display_filterglue_catalogДаДа'database_display_filter': '<database_display_filter>'
database_display_filtersglue_catalogДаДа'database_display_filters': ('<filter>', ...)
commentglue_catalogДаДа'comment': '<comment>'
aws_rolekinesisДаДа'aws_role': '<aws_role>'
external_idkinesisДаДа'external_id': '<external_id>'
aws_access_key_idkinesisДаДа'aws_access_key_id': '<aws_access_key_id>'
aws_secret_access_keykinesisДаДа'aws_secret_access_key': '<aws_secret_access_key>'
regionkinesisНетНет'region': '<region>'
read_onlykinesisНетДа'read_only': True/False
max_writerskinesisДаДа'max_writers': <integer>
stream_display_filterkinesisДаДа'stream_display_filter': '<stream_display_filter>'
stream_display_filterskinesisДаДа'stream_display_filters': ('<filter>', ...)
commentkinesisДаДа'comment': '<comment>'
connection_stringsnowflakeДаНет'connection_string': '<connection_string>'
user_namesnowflakeДаНет'user_name': '<user_name>'
passwordsnowflakeДаНет'password': '<password>'
max_concurrent_connectionssnowflakeДаДа'max_concurrent_connections': <integer>
commentsnowflakeДаДа'comment': '<comment>'
connection_stringredshiftДаНет'connection_string': '<connection_string>'
user_nameredshiftДаНет'user_name': '<user_name>'
passwordredshiftДаНет'password': '<password>'
max_concurrent_connectionsredshiftДаДа'max_concurrent_connections': <integer>
commentredshiftДаДа'comment': '<comment>'
connection_stringmysqlДаНет'connection_string': '<connection_string>'
user_namemysqlДаНет'user_name': '<user_name>'
passwordmysqlДаНет'password': '<password>'
commentmysqlДаДа'comment': '<comment>'
connection_stringpostgresДаНет'connection_string': '<connection_string>'
user_namepostgresДаНет'user_name': '<user_name>'
passwordpostgresДаНет'password': '<password>'
commentpostgresДаДа'comment': '<comment>'
connection_stringelasticsearchДаНет'connection_string': '<connection_string>'
user_nameelasticsearchДаНет'user_name': '<user_name>'
passwordelasticsearchДаНет'password': '<password>'
commentelasticsearchДаДа'comment': '<comment>'
connection_stringmongodbДаНет'connection_string': '<connection_string>'
user_namemongodbДаНет'user_name': '<user_name>'
passwordmongodbДаНет'password': '<password>'
timeoutmongodbДаДа'timeout': "INTERVAL 'N' SECONDS"
commentmongodbДаДа'comment': '<comment>'
connection_stringmssqlДаНет'connection_string': '<connection_string>'
user_namemssqlДаНет'user_name': '<user_name>'
passwordmssqlДаНет'password': '<password>'
commentmssqlДаДа'comment': '<comment>'

Опции цели

ОпцияХранилищеРедактируемоНеобязательноСинтаксис конфигурации
globally_unique_keysdatalakeНетДа'globally_unique_keys': True/False
storage_connectiondatalakeНетДа'storage_connection': '<storage_connection>'
storage_locationdatalakeНетДа'storage_location': '<storage_location>'
compute_clusterdatalakeДаДа'compute_cluster': '<compute_cluster>'
compressiondatalakeДаДа'compression': 'SNAPPY/GZIP'
compaction_processesdatalakeДаДа'compaction_processes': <integer>
disable_compactiondatalakeДаДа'disable_compaction': True/False
retention_date_partitiondatalakeНетДа'retention_date_partition': '<column>'
table_data_retentiondatalakeДаДа'table_data_retention': '<N DAYS>'
column_data_retentiondatalakeДаДа'column_data_retention': ({'COLUMN' : '<column>','DURATION': '<N DAYS>'})
commentdatalakeДаДа'comment': '<comment>'
storage_connectionmaterialized_viewНетДа'storage_connection': '<storage_connection>'
storage_locationmaterialized_viewНетДа'storage_location': '<storage_location>'
max_time_travel_durationmaterialized_viewДаДа'max_time_travel_duration': '<N DAYS>'
compute_clustermaterialized_viewДаДа'compute_cluster': '<compute_cluster>'
column_transformationssnowflakeНетДа'column_transformations': {'<column>' : '<expression>' , ...}
deduplicate_withsnowflakeНетДа'deduplicate_with': {'COLUMNS' : ['col1', 'col2'],'WINDOW': 'N HOURS'}
exclude_columnssnowflakeНетДа'exclude_columns': ('<exclude_column>', ...)
create_table_if_missingsnowflakeНетДа'create_table_if_missing': True/False}
run_intervalsnowflakeНетДа'run_interval': '<N MINUTES/HOURS/DAYS>'

Опции трансформации

ОпцияХранилищеРедактируемоНеобязательноСинтаксис конфигурации
run_intervals3НетДа'run_interval': '<N MINUTES/HOURS/DAYS>'
start_froms3НетДа'start_from': '<timestamp>/NOW/BEGINNING'
end_ats3ДаДа'end_at': '<timestamp>/NOW'
compute_clusters3ДаДа'compute_cluster': '<compute_cluster>'
comments3ДаДа'comment': '<comment>'
skip_validationss3НетДа'skip_validations': ('ALLOW_CARTESIAN_PRODUCT', ...)
skip_all_validationss3НетДа'skip_all_validations': True/False
aggregation_parallelisms3ДаДа'aggregation_parallelism': <integer>
run_parallelisms3ДаДа'run_parallelism': <integer>
file_formats3НетНет'file_format': '(type = <file_format>)'
compressions3НетДа'compression': 'SNAPPY/GZIP ...'
date_patterns3НетДа'date_pattern': '<date_pattern>'
output_offsets3НетДа'output_offset': '<N MINUTES/HOURS/DAYS>'
run_intervalelasticsearchНетДа'run_interval': '<N MINUTES/HOURS/DAYS>'
routing_field_nameelasticsearchДаДа'routing_field_name': '<routing_field_name>'
start_fromelasticsearchНетДа'start_from': '<timestamp>/NOW/BEGINNING'
end_atelasticsearchДаДа'end_at': '<timestamp>/NOW'
compute_clusterelasticsearchДаДа'compute_cluster': '<compute_cluster>'
skip_validationselasticsearchНетДа'skip_validations': ('ALLOW_CARTESIAN_PRODUCT', ...)
skip_all_validationselasticsearchНетДа'skip_all_validations': True/False
aggregation_parallelismelasticsearchДаДа'aggregation_parallelism': <integer>
run_parallelismelasticsearchДаДа'run_parallelism': <integer>
bulk_max_size_byteselasticsearchДаДа'bulk_max_size_bytes': <integer>
index_partition_sizeelasticsearchДаДа'index_partition_size': 'HOURLY/DAILY ...'
commentelasticsearchДаДа'comment': '<comment>'
custom_insert_expressionssnowflakeДаДа'custom_insert_expressions': {'INSERT_TIME' : 'CURRENT_TIMESTAMP()','MY_VALUE': '<value>'}
custom_update_expressionssnowflakeДаДа'custom_update_expressions': {'UPDATE_TIME' : 'CURRENT_TIMESTAMP()','MY_VALUE': '<value>'}
keep_existing_values_when_nullsnowflakeДаДа'keep_existing_values_when_null': True/False
add_missing_columnssnowflakeНетДа'add_missing_columns': True/False
run_intervalsnowflakeНетДа'run_interval': '<N MINUTES/HOURS/DAYS>'
commit_intervalsnowflakeДаДа'commit_interval': '<N MINUTE[S]/HOUR[S]/DAY[S]>'
start_fromsnowflakeНетДа'start_from': '<timestamp>/NOW/BEGINNING'
end_atsnowflakeДаДа'end_at': '<timestamp>/NOW'
compute_clustersnowflakeДаДа'compute_cluster': '<compute_cluster>'
skip_validationssnowflakeНетДа'skip_validations': ('ALLOW_CARTESIAN_PRODUCT', ...)
skip_all_validationssnowflakeНетДа'skip_all_validations': True/False
aggregation_parallelismsnowflakeДаДа'aggregation_parallelism': <integer>
run_parallelismsnowflakeДаДа'run_parallelism': <integer>
commentsnowflakeДаДа'comment': '<comment>'
add_missing_columnsdatalakeНетДа'add_missing_columns': True/False
run_intervaldatalakeНетДа'run_interval': '<N MINUTES/HOURS/DAYS>'
start_fromdatalakeНетДа'start_from': '<timestamp>/NOW/BEGINNING'
end_atdatalakeДаДа'end_at': '<timestamp>/NOW'
compute_clusterdatalakeДаДа'compute_cluster': '<compute_cluster>'
skip_validationsdatalakeНетДа'skip_validations': ('ALLOW_CARTESIAN_PRODUCT', ...)
skip_all_validationsdatalakeНетДа'skip_all_validations': True/False
aggregation_parallelismdatalakeДаДа'aggregation_parallelism': <integer>
run_parallelismdatalakeДаДа'run_parallelism': <integer>
commentdatalakeДаДа'comment': '<comment>'
run_intervalredshiftНетДа'run_interval': '<N MINUTES/HOURS/DAYS>'
start_fromredshiftНетДа'start_from': '<timestamp>/NOW/BEGINNING'
end_atredshiftДаДа'end_at': '<timestamp>/NOW'
compute_clusterredshiftДаДа'compute_cluster': '<compute_cluster>'
skip_validationsredshiftНетДа'skip_validations': ('ALLOW_CARTESIAN_PRODUCT', ...)
skip_all_validationsredshiftНетДа'skip_all_validations': True/False
aggregation_parallelismredshiftДаДа'aggregation_parallelism': <integer>
run_parallelismredshiftДаДа'run_parallelism': <integer>
skip_failed_filesredshiftНетДа'skip_failed_files': True/False
fail_on_write_errorredshiftНетДа'fail_on_write_error': True/False
commentredshiftДаДа'comment': '<comment>'
run_intervalpostgresНетДа'run_interval': '<N MINUTES/HOURS/DAYS>'
start_frompostgresНетДа'start_from': '<timestamp>/NOW/BEGINNING'
end_atpostgresДаДа'end_at': '<timestamp>/NOW'
compute_clusterpostgresДаДа'compute_cluster': '<compute_cluster>'
skip_validationspostgresНетДа'skip_validations': ('ALLOW_CARTESIAN_PRODUCT', ...)
skip_all_validationspostgresНетДа'skip_all_validations': True/False
aggregation_parallelismpostgresДаДа'aggregation_parallelism': <integer>
run_parallelismpostgresДаДа'run_parallelism': <integer>
commentpostgresДаДа'comment': '<comment>'

Опции копирования

ОпцияХранилищеКатегорияРедактируемоНеобязательноСинтаксис конфигурации
topickafkasource_optionsНетНет'topic': '<topic>'
exclude_columnskafkajob_optionsНетДа'exclude_columns': ('<exclude_column>', ...)
deduplicate_withkafkajob_optionsНетДа'deduplicate_with': {'COLUMNS' : ['col1', 'col2'],'WINDOW': 'N HOURS'}
consumer_propertieskafkajob_optionsДаДа'consumer_properties': '<consumer_properties>'
reader_shardskafkajob_optionsДаДа'reader_shards': <integer>
store_raw_datakafkajob_optionsНетДа'store_raw_data': True/False
start_fromkafkajob_optionsНетДа'start_from': 'BEGINNING/NOW'
end_atkafkajob_optionsДаДа'end_at': '<timestamp>/NOW'
compute_clusterkafkajob_optionsДаДа'compute_cluster': '<compute_cluster>'
run_parallelismkafkajob_optionsДаДа'run_parallelism': <integer>
content_typekafkajob_optionsДаДа'content_type': 'AUTO/CSV/...'
compressionkafkajob_optionsНетДа'compression': 'AUTO/GZIP/...'
column_transformationskafkajob_optionsНетДа'column_transformations': {'<column>' : '<expression>' , ...}
commit_intervalkafkajob_optionsДаДа'commit_interval': '<N MINUTE[S]/HOUR[S]/DAY[S]>'
skip_validationskafkajob_optionsНетДа'skip_validations': ('MISSING_TOPIC')
skip_all_validationskafkajob_optionsНетДа'skip_all_validations': True/False
commentkafkajob_optionsДаДа'comment': '<comment>'
table_include_listmysqlsource_optionsДаДа'table_include_list': ('<regexFilter>', ...)
column_exclude_listmysqlsource_optionsДаДа'column_exclude_list': ('<regexFilter>', ...)
exclude_columnsmysqljob_optionsНетДа'exclude_columns': ('<exclude_column>', ...)
column_transformationsmysqljob_optionsНетДа'column_transformations': {'<column>' : '<expression>' , ...}
skip_snapshotsmysqljob_optionsДаДа'skip_snapshots': True/False
end_atmysqljob_optionsДаДа'end_at': '<timestamp>/NOW'
compute_clustermysqljob_optionsДаДа'compute_cluster': '<compute_cluster>'
snapshot_parallelismmysqljob_optionsДаДа'snapshot_parallelism': <integer>
ddl_filtersmysqljob_optionsНетДа'ddl_filters': ('<filter>', ...)
commentmysqljob_optionsДаДа'comment': '<comment>'
table_include_listpostgressource_optionsНетНет'table_include_list': ('<regexFilter>', ...)
column_exclude_listpostgressource_optionsНетДа'column_exclude_list': ('<regexFilter>', ...)
heartbeat_tablepostgresjob_optionsНетДа'heartbeat_table': '<heartbeat_table>'
skip_snapshotspostgresjob_optionsНетДа'skip_snapshots': True/False
publication_namepostgresjob_optionsНетНет'publication_name': '<publication_name>'
end_atpostgresjob_optionsДаДа'end_at': '<timestamp>/NOW'
compute_clusterpostgresjob_optionsДаДа'compute_cluster': '<compute_cluster>'
commentpostgresjob_optionsДаДа'comment': '<comment>'
parse_json_columnspostgresjob_optionsНетНет'parse_json_columns': True/False
column_transformationspostgresjob_optionsНетДа'column_transformations': {'<column>' : '<expression>' , ...}
snapshot_parallelismpostgresjob_optionsДаДа'snapshot_parallelism': <integer>
exclude_columnspostgresjob_optionsНетДа'exclude_columns': ('<exclude_column>', ...)
locations3source_optionsНетНет'location': '<location>'
date_patterns3job_optionsНетДа'date_pattern': '<date_pattern>'
file_patterns3job_optionsНетДа'file_pattern': '<file_pattern>'
initial_load_patterns3job_optionsНетДа'initial_load_pattern': '<initial_load_pattern>'
initial_load_prefixs3job_optionsНетДа'initial_load_prefix': '<initial_load_prefix>'
delete_files_after_loads3job_optionsНетДа'delete_files_after_load': True/False
deduplicate_withs3job_optionsНетДа'deduplicate_with': {'COLUMNS' : ['col1', 'col2'],'WINDOW': 'N HOURS'}
end_ats3job_optionsДаДа'end_at': '<timestamp>/NOW'
start_froms3job_optionsНетДа'start_from': '<timestamp>/NOW/BEGINNING'
compute_clusters3job_optionsДаДа'compute_cluster': '<compute_cluster>'
run_parallelisms3job_optionsДаДа'run_parallelism': <integer>
content_types3job_optionsДаДа'content_type': 'AUTO/CSV...'
compressions3job_optionsНетДа'compression': 'AUTO/GZIP...'
comments3job_optionsДаДа'comment': '<comment>'
column_transformationss3job_optionsНетДа'column_transformations': {'<column>' : '<expression>' , ...}
commit_intervals3job_optionsДаДа'commit_interval': '<N MINUTE[S]/HOUR[S]/DAY[S]>'
skip_validationss3job_optionsНетДа'skip_validations': ('EMPTY_PATH')
skip_all_validationss3job_optionsНетДа'skip_all_validations': True/False
exclude_columnss3job_optionsНетДа'exclude_columns': ('<exclude_column>', ...)
streamkinesissource_optionsНетНет'stream': '<stream>'
reader_shardskinesisjob_optionsДаДа'reader_shards': <integer>
store_raw_datakinesisjob_optionsНетДа'store_raw_data': True/False
start_fromkinesisjob_optionsНетДа'start_from': '<timestamp>/NOW/BEGINNING'
end_atkinesisjob_optionsНетДа'end_at': '<timestamp>/NOW'
compute_clusterkinesisjob_optionsДаДа'compute_cluster': '<compute_cluster>'
run_parallelismkinesisjob_optionsНетДа'run_parallelism': <integer>
content_typekinesisjob_optionsДаДа'content_type': 'AUTO/CSV...'
compressionkinesisjob_optionsНетДа'compression': 'AUTO/GZIP...'
commentkinesisjob_optionsДаДа'comment': '<comment>'
column_transformationskinesisjob_optionsДаДа'column_transformations': {'<column>' : '<expression>' , ...}
deduplicate_withkinesisjob_optionsНетДа'deduplicate_with': {'COLUMNS' : ['col1', 'col2'],'WINDOW': 'N HOURS'}
commit_intervalkinesisjob_optionsДаДа'commit_interval': '<N MINUTE[S]/HOUR[S]/DAY[S]>'
skip_validationskinesisjob_optionsНетДа'skip_validations': ('MISSING_STREAM')
skip_all_validationskinesisjob_optionsНетДа'skip_all_validations': True/False
exclude_columnskinesisjob_optionsНетДа'exclude_columns': ('<exclude_column>', ...)
table_include_listmssqlsource_optionsДаДа'table_include_list': ('<regexFilter>', ...)
column_exclude_listmssqlsource_optionsДаДа'column_exclude_list': ('<regexFilter>', ...)
exclude_columnsmssqljob_optionsНетДа'exclude_columns': ('<exclude_column>', ...)
column_transformationsmssqljob_optionsНетДа'column_transformations': {'<column>' : '<expression>' , ...}
skip_snapshotsmssqljob_optionsДаДа'skip_snapshots': True/False
end_atmssqljob_optionsДаДа'end_at': '<timestamp>/NOW'
compute_clustermssqljob_optionsДаДа'compute_cluster': '<compute_cluster>'
snapshot_parallelismmssqljob_optionsДаДа'snapshot_parallelism': <integer>
parse_json_columnsmssqljob_optionsНетНет'parse_json_columns': True/False
commentmssqljob_optionsДаДа'comment': '<comment>'
collection_include_listmongodbsource_optionsДаДа'collection_include_list': ('<regexFilter>', ...)
exclude_columnsmongodbjob_optionsНетДа'exclude_columns': ('<exclude_column>', ...)
column_transformationsmongodbjob_optionsНетДа'column_transformations': {'<column>' : '<expression>' , ...}
skip_snapshotsmongodbjob_optionsДаДа'skip_snapshots': True/False
end_atmongodbjob_optionsДаДа'end_at': '<timestamp>/NOW'
compute_clustermongodbjob_optionsДаДа'compute_cluster': '<compute_cluster>'
snapshot_parallelismmongodbjob_optionsДаДа'snapshot_parallelism': <integer>
commentmongodbjob_optionsДаДа'comment': '<comment>'
0