Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать действие копирования в конвейере для копирования данных из Teradata и в нее.
Поддерживаемая конфигурация
Для настройки каждой вкладки в действии копирования перейдите к следующим разделам соответственно.
Общая информация
Для настройки вкладки "Общие " перейдите к разделу "Общие".
Исходный материал
Подсказка
Чтобы эффективно загружать данные из Teradata с использованием разбиения данных, изучите больше в разделе Параллельное копирование из Teradata.
Следующие свойства поддерживаются для Teradata на вкладке "Источник " действия копирования.
Требуются следующие свойства:
Подключение. Выберите подключение Teradata из списка подключений. Если подключение не существует, создайте новое соединение Teradata.
Используйте запрос: выберите таблицу или запрос.
В разделе "Дополнительно" можно указать следующие поля:
Параметр секционирования: задает параметры секционирования данных, используемые для загрузки данных из Teradata. Допустимые значения: None (по умолчанию), DynamicRange и Hash. Если параметр секции включен (т. е., не
None), степень параллелизма для одновременной загрузки данных из Teradata регулируется степенью параллелизма копирования в настройках активности копирования.Нет: выберите этот параметр, чтобы не использовать секцию.
Динамический диапазон: при использовании запроса с включённым режимом параллельной обработки требуется параметр секционирования диапазона
?DfDynamicRangePartitionCondition. Пример запроса:SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.имя столбца раздела: укажите имя исходного столбца в целочисленном или типа date/datetime (
int,smallint,bigint,date,smalldatetime,datetime,datetime2илиdatetimeoffset), используемого секционированием диапазона для параллельного копирования. Если значение не указано, автоматически определяется индекс или первичный ключ таблицы, который затем используется в качестве столбца секционирования.Верхняя граница раздела: укажите максимальное значение столбца раздела для разделения диапазона. Это значение используется для определения шага раздела, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса секционируются и копируются.
Нижняя граница секции: укажите минимальное значение столбца секционирования для деления диапазона секций. Это значение используется для определения шага раздела, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса секционируются и копируются.
Хэш: При использовании запроса с включенным режимом параллельной обработки требуются параметры секционирования с помощью хэша (
?AdfHashPartitionCondition). Пример запроса:select * from <TableName> where ?AdfHashPartitionCondition.имя столбца раздела: укажите имя исходного столбца в целочисленном или типа date/datetime (
int,smallint,bigint,date,smalldatetime,datetime,datetime2илиdatetimeoffset), используемого секционированием диапазона для параллельного копирования. Если значение не указано, автоматически определяется индекс или первичный ключ таблицы, который затем используется в качестве столбца секционирования.
дополнительные столбцы: добавьте дополнительные столбцы данных для хранения относительного пути или статического значения исходных файлов. Выражение поддерживается для последнего варианта.
Назначение
Следующие свойства поддерживаются для Teradata на вкладке "Назначение " действия копирования.
Требуются следующие свойства:
Подключение. Выберите подключение Teradata из списка подключений. Если подключение не существует, создайте новое соединение Teradata.
Таблица: укажите имя таблицы в Teradata для записи данных. Выберите таблицу из раскрывающегося списка или выберите Введите вручную, чтобы ввести имя схемы и таблицы.
В разделе "Дополнительно" можно указать следующие поля:
- Дополнительные параметры формата Teradata: укажите дополнительные параметры форматирования, которые будут использоваться в инструкции COPY для загрузки данных. Примеры: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Дополнительные сведения см. в формате Teradata DATE. Это свойство работает только для прямого копирования из источника в формате DelimitedText в Teradata.
Прямая копия в Teradata
Если исходное хранилище данных и формат соответствуют критериям, описанным в этом разделе, можно использовать действие копирования для непосредственного копирования из источника в Teradata. Служба проверяет настройки и завершает выполнение действия Copy, если не выполнены следующие критерии.
Исходное подключение — это хранилище BLOB-объектов Azure и Azure Data Lake Storage Gen2 с ключом учетной записи и проверкой подлинности с подписанным ключом доступа.
Исходный формат данных — Parquet и DelimitedText со следующими конфигурациями:
Для формата Parquet кодек сжатия — None или Snappy.
Для формата Текст с разделителями:
-
rowDelimiterимеет значение\n. -
compressionможет быть без сжатия или gzip. Если выбрано сжатие gzip , файл должен заканчиваться расширением .gz. -
encodingNameоставлено по умолчанию или установлено значением UTF-8. -
quoteChar— двойная кавычка"или пустая строка. -
escapeChar— двойная кавычка"или пустая строка. -
nullValueимеет значение NULL или пустая строка.
-
В источнике действия Copy:
- При использовании Azure Data Lake Storage 2-го поколения разрешен только статический путь.
- Только статический путь и
prefixразрешен при использовании хранилища BLOB-объектов Azure.
Статические пути будут служить префиксами при копировании в Teradata.
Промежуточное копирование в Teradata
Если исходное хранилище данных или формат не совместимы с командой Teradata COPY, как упомянуто в предыдущем разделе, включите встроенное поэтапное копирование, используя промежуточное хранилище в Azure Blob. Функция поэтапного копирования также обеспечивает более высокую пропускную способность. Служба автоматически преобразует данные в соответствии с требованиями к формату данных Teradata. Затем она вызывает команду COPY для загрузки данных в Teradata. Наконец, она удаляет временные данные из облачного хранилища.
Чтобы использовать эту функцию, создайте подключение к хранилищу BLOB-объектов Azure, которое ссылается на аккаунт хранения Azure в качестве промежуточного хранилища. Затем укажите свойства enableStaging и stagingSettings в действии Copy.
Замечание
Необходимо использовать подключение к промежуточному хранилищу BLOB-объектов Azure с аутентификацией< c0>ключа учетной записи или< c1>разделенной учетной записи с подписью как требуется командой Teradata COPY.
Картирование
Чтобы настроить конфигурацию вкладки "Сопоставление ", перейдите к разделу "Настройка сопоставлений" на вкладке сопоставления.
Настройки
Для настройки вкладки перейдите к Настройка других параметров на вкладке "Параметры".
Сопоставление типов данных для Teradata
При копировании данных из Teradata используются следующие сопоставления от типов данных Teradata к промежуточным типам, применяемым службой.
| Тип данных Teradata | Тип данных временной службы |
|---|---|
| БигИнт | Int64 |
| блоб | Byte[] |
| Байт | Byte[] |
| ByteInt | Int16 |
| Уголь | String |
| Клоб | String |
| Date | Date |
| Decimal | Десятичный |
| Double | Double |
| Графика | String |
| Целое число | Int32 |
| День интервала | TimeSpan |
| Интервал между днем и часом | TimeSpan |
| Интервал дня до минуты | TimeSpan |
| Интервал от дней до секунд | TimeSpan |
| Интервал в час | TimeSpan |
| Интервал от часа до минуты | TimeSpan |
| Интервал от часа к секунде | TimeSpan |
| Интервал в минуту | TimeSpan |
| Интервал от минуты до секунды | TimeSpan |
| Интервал месяца | String |
| Интервал в секунду | TimeSpan |
| Годовой интервал | String |
| Интервал года к месяцу | String |
| Number | Double |
| Период (дата) | String |
| Период (время) | String |
| Период (время с часовыми поясами) | String |
| Период (метка времени) | String |
| Период (метка времени с часовым поясом) | String |
| SmallInt | Int16 |
| Time | Time |
| Время с указанием часового пояса | строка |
| Отметка времени | DateTime |
| Метка времени с учетом часового пояса | DateTimeOffset |
| VarByte | Byte[] |
| VarChar | String |
| VarGraphic | String |
| Xml | String |
Параллельное копирование из Teradata
Коннектор Teradata предоставляет встроенную разбивку данных для параллельного копирования данных из Teradata. Вы можете найти параметры разбиения данных в таблице Source при выполнении операции копирования.
Когда вы включаете копирование с разделением, служба выполняет параллельные запросы к вашему источнику Teradata для загрузки данных по разделам. Параллельная степень управляется степенью параллелизма копирования на вкладке параметров действия копирования. Например, если задать степень параллелизма копирования четырем, служба одновременно создает и выполняет четыре запроса на основе указанного параметра секции и параметров, а каждый запрос получает часть данных из Teradata.
Вам рекомендуется включить параллельное копирование с разделением данных, особенно если вы загружаете большой объем данных из вашей Teradata. Ниже приведены рекомендуемые конфигурации для разных сценариев. Если данные копируются в файловое хранилище данных, то рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки), так как производительность в таком случае будет выше, чем при записи в один файл.
| Сценарий | Рекомендуемые параметры |
|---|---|
| Полная загрузка из большой таблицы. |
Параметр раздела: Хэш. Во время выполнения служба автоматически обнаруживает основной столбец индекса, применяет к нему хеширование и копирует данные по разделам. |
| Загрузите большой объем данных, используя пользовательский запрос. |
Параметр раздела: Хэш. Запрос: SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>.Колонка раздела: Укажите колонку, используемую для применения хеш-разделения. Если оно не указано, служба автоматически обнаруживает столбец PK таблицы, указанной в данных Teradata. Во время выполнения сервис заменяет ?AdfHashPartitionCondition на логику хеширования разделов и отправляет её в Teradata. |
| Загрузите большой объем данных, используя пользовательский запрос, имеющий числовой столбец с равномерно распределёнными значениями для разделения по диапазону. |
Параметры разделения: Динамическое разделение диапазона. Запрос: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.Столбец секционирования: укажите столбец, используемый для секционирования данных. Можно выполнять секционирование на основе столбца с целочисленным типом данных. верхняя граница раздела и нижняя граница раздела: Укажите, хотите ли вы выполнить фильтрацию по столбцу раздела, чтобы извлечь данные только в диапазоне между нижней и верхней границей. Во время выполнения служба заменяет ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound и ?AdfRangePartitionLowbound на фактические названия столбцов и диапазоны значений для каждого раздела и отправляет их в Teradata. Например, если указан столбец секционирования ID с нижней границей 1 и верхней границей 80 при этом для параллельного копирования указано значение 4, служба будет извлекать данные по 4 секциям. Их идентификаторы находятся между [1, 20], [21, 40], [41, 60] и [61, 80], соответственно. |
Пример: запрос с хеш-разделением
"source": {
"type": "TeradataSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>",
"partitionOption": "Hash",
"partitionSettings": {
"partitionColumnName": "<hash_partition_column_name>"
}
}
Пример: запрос с секционированием по динамическому диапазону
"source": {
"type": "TeradataSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<dynamic_range_partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column>",
"partitionLowerBound": "<lower_value_of_partition_column>"
}
}
Сводка таблицы
В следующих таблицах содержатся дополнительные сведения об операции копирования в системе Teradata.
Исходная информация
| Имя | Описание | Ценность | Обязательно | Свойство скрипта JSON |
|---|---|---|---|---|
| Подключение | Ваше подключение к исходному хранилищу данных. | < ваше подключение Teradata > | Да | подключение |
| Использовать запрос | Способ чтения данных из Teradata. Примените таблицу для чтения данных из указанной таблицы или примените запрос для чтения данных с помощью запросов. | • таблицы • Запрос |
нет | / |
| Для таблицы | ||||
| Имя схемы | Имя схемы. | < имя вашей схемы > | нет | схема |
| имя таблицы | Название таблицы. | < имя вашей таблицы > | нет | таблица |
| Запрос | ||||
| Запрос | Используйте пользовательский SQL-запрос для чтения данных. | < sql-запросы > | нет | запрос |
| Опция разбиения | Параметры секционирования данных, используемые для загрузки данных из Teradata. | • Нет • Динамический диапазон • Хэш |
нет | / |
| Для динамического диапазона | ||||
| имя столбца раздела | Укажите имя исходного столбца в целочисленном или формате дата/дата-время (int, smallint, bigint, date, smalldatetime, datetime, datetime2 или datetimeoffset), используемый для диапазонного секционирования в параллельной копии.Если значение не указано, автоматически определяется индекс или первичный ключ таблицы, который затем используется в качестве столбца секционирования. |
< имена ваших столбцов для секционирования > | нет | имя столбца раздела |
| верхняя граница раздела | Укажите максимальное значение столбца секционирования для разделения диапазона секций. Это значение используется для определения шага раздела, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса секционируются и копируются. | < верхняя граница раздела > | нет | верхняя граница раздела |
| нижняя граница раздела | Укажите минимальное значение столбца секционирования для разделения диапазона секций. Это значение используется для определения шага раздела, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса секционируются и копируются. | < ваша нижняя граница раздела > | нет | partitionLowerBound |
| Для хэша | ||||
| имя столбца раздела | Укажите имя исходного столбца в целочисленном или формате дата/дата-время (int, smallint, bigint, date, smalldatetime, datetime, datetime2 или datetimeoffset), используемый для диапазонного секционирования в параллельной копии.Если значение не указано, автоматически определяется индекс или первичный ключ таблицы, который затем используется в качестве столбца секционирования. |
< имена ваших столбцов для секционирования > | нет | имя столбца раздела |
| Дополнительные столбцы | Добавьте дополнительные столбцы данных для хранения относительного пути или статического значения исходных файлов. Выражение поддерживается для последнего варианта. | •Имя •Ценность |
нет | дополнительныеКолонки •имя •ценность |
Сведения о назначении
| Имя | Описание | Ценность | Обязательно | Свойство скрипта JSON |
|---|---|---|---|---|
| Подключение | Подключение к целевому хранилищу данных. | < ваше подключение Teradata > | Да | подключение |
| таблица | Целевая таблица данных для записи данных. | < имя вашей таблицы > | Да | / |
| Имя схемы | Имя схемы. | < имя вашей схемы > | нет | схема |
| имя таблицы | Название таблицы. | < имя вашей таблицы > | нет | таблица |
| Дополнительные параметры формата Teradata | Укажите дополнительные параметры формата, которые будут использоваться в инструкции COPY для загрузки данных. Примеры: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Дополнительные сведения см. в формате Teradata DATE. Это свойство работает только для прямого копирования из источника в формате DelimitedText в Teradata. | • ФОРМАТ_ДАТЫ • ФОРМАТ_ВРЕМЕНИ • Формат временной метки |
нет | дополнительные параметры форматирования: • ФОРМАТ_ДАТЫ • ФОРМАТ_ВРЕМЕНИ • Формат временной метки (TIMESTAMP_FORMAT) |