Команда COPY выполняется, но данные не копируются из Teradata (on-prem) - PullRequest
0 голосов
/ 17 января 2020

Я столкнулся с проблемой, когда у меня есть настроенный конвейер, который получает список таблиц из Teradata с использованием действия Lookup, а затем передает эти элементы в действие ForEach, которое затем копирует данные параллельно и сохраняет их как сжатый файл. Требование заключается в архивировании некоторых таблиц, которые больше не используются.

Для этого конвейера я не использую никаких опций разбиения, так как большинство таблиц маленькие, и я сохранил их гибкость.

Трубопровод

enter image description here

Копирование в рамках действия ForEach enter image description here

99% таблиц работали без проблем и были скопированы в виде файлов gz в хранилище больших двоичных объектов, но две таблицы, в частности, работают в течение длительного времени (приблизительно от 4 до 6 часов) без записи каких-либо данных в большой двоичный объект. учетная запись хранения.

image

Обратите внимание, что на изображении выше написано "Отменено", но это было сделано мной. До этого у меня было время выполнения, как описано выше, но все еще не было записано никаких данных. Это касается только 2 таблиц.

Я проверил с нашей командой Teradata, и эти таблицы не используются никем (следовательно, они не заблокированы). Я также посмотрел на «Teradata Viewpoint» (инструмент администратора), посмотрел на монитор запросов и увидел, что запрос выполняется на Teradata без проблем.

Любое понимание будет высоко оценено.

Ответы [ 2 ]

1 голос
/ 18 января 2020

Обращая внимание на проблему, обратите внимание, что размер данных таблицы больше, чем может хранить большой двоичный объект (поскольку вы не используете какие-либо параметры раздела)

Используйте параметр раздела для оптимизации производительности и хранения данных

Ссылка

0 голосов
/ 06 февраля 2020

На случай, если кто-то еще столкнется с этим, я решил это, создав новое соединение с хранилищем данных под названием «TD_Prod_datasetname». Цель этого набора данных - не указывать на указанную таблицу c, а просто принять значение "item (). TableName".

Этот источник данных содержит два основных значения. 1-й - это @ dataset (). TeradataName

Свойство набора данных enter image description here

Я только придумал, что после небольшого поиска в Google.

Затем я создал параметр с именем "TeradataTable" как String.

enter image description here

Затем я обновил свой конвейер. Как указано выше, основные два вида деятельности остаются неизменными. У меня есть поиск, а затем ForEach Activity (где для каждого будет получать значения элемента):

enter image description here

Однако в команде COPY внутри ForEach Активность я обновил источник. Вместо того, чтобы получать "item (). Name", я прохожу через @item (). TableName:

enter image description here

Это позволило мне затем выбрать Опция «Таблица» и, поскольку я использую Таблицу вместо запроса, я могу использовать раздел «Ха sh». Я оставил это поле пустым, потому что согласно документации Microsoft он автоматически найдет первичный ключ, который будет использоваться для этого.

Единственная проблема, с которой я столкнулся при использовании этого метода, заключалась в том, что если вы столкнетесь с таблицей, у которой нет первичного ключа, то этот элемент не будет выполнен, и его необходимо будет запустить через другой процесс или вручную вне этой работы.

Из-за этого изменения ранее скопированные файлы, которые не были скопированы, теперь успешно скопированы в нашу учетную запись хранилища BLOB-объектов.

Надеюсь, что это поможет кому-то еще, который хочет увидеть, как создавать параллельные копии, используя Teradata в качестве источника и проходя через несколько значений таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...