Настройка Teradata в операции копирования

В этой статье описывается, как использовать действие копирования в конвейере для копирования данных из Teradata и в нее.

Поддерживаемая конфигурация

Для настройки каждой вкладки в действии копирования перейдите к следующим разделам соответственно.

Общая информация

Для настройки вкладки "Общие " перейдите к разделу "Общие".

Исходный материал

Подсказка

Чтобы эффективно загружать данные из Teradata с использованием разбиения данных, изучите больше в разделе Параллельное копирование из Teradata.

Следующие свойства поддерживаются для Teradata на вкладке "Источник " действия копирования.

Снимок экрана: вкладка источника и список свойств.

Требуются следующие свойства:

  • Подключение. Выберите подключение Teradata из списка подключений. Если подключение не существует, создайте новое соединение Teradata.

  • Используйте запрос: выберите таблицу или запрос.

    • Если выбрать таблицу :

      • Таблица: укажите имя таблицы в Teradata для чтения данных. Выберите таблицу из раскрывающегося списка или выберите Введите вручную, чтобы ввести имя схемы и таблицы.
    • Если выбрать запрос:

      • Запрос: определите настраиваемый SQL-запрос для чтения данных.

        Снимок экрана: запрос.

В разделе "Дополнительно" можно указать следующие поля:

  • Параметр секционирования: задает параметры секционирования данных, используемые для загрузки данных из 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)