2016-09-21 4 views
2

(Talend OS для интеграции данных)Может ли Talend использовать динамическое имя таблицы для вывода MySQL?

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

Сценарий

Допустим, у вас огромный список 1,000,000 имен - Дэйв Смит, Дэйв Джонс, Дэйв Bloggs и т.д. Они все хранятся в одной таблице.

Вы должны разделить их в таблицы, которые отражают первое имя, так что вы бы БД с именами таблиц, таких как «Энди», «Адриан», «Адам» и т.д.

Где я at

Что я могу сделать, без проблем, это пакетный экспорт полного набора данных в таблицу. Я также могу перебирать поле, чтобы создать свои отдельные таблицы, используя tMysqlRow (это намного быстрее по отдельности).

Затем я попытался выбрать и выплюнуть данные в свои соответствующие области, но наткнулся на эти вопросы:

  • tMySqlRow может быть использован с переменными, так что я могу вставить данные в соответствующую таблицу, но он настолько медленный, что он лишний. Он работает со скоростью около 2000 строк/сек, и их около 20 миллионов.
  • tMySqlOutput намного быстрее и может сделать это достаточно хорошо, но для этого нужно иметь четко обозначенное имя таблицы. Использование контекстной переменной в качестве имени таблицы не работает (читается как «Null»).

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

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

Заранее спасибо.

Edit - добавлены скриншоты

context variable available in selection Контекст печати в окне на скриншоте («AB» было значение контекста тест, используемый), чтобы показать, что эта величина была актуальна до тех пор, пока не был объявлен в поле 'Таблица', но затем возвращает нулевое значение

context variable prints to console okay, but is ignored as the table value

+0

Можете ли вы предоставить скриншоты, где вы задаете значение контекста для имени таблицы и как вы читаете его в компоненте tMySqlOutput? –

+0

Возможно, сначала задан вопрос: зачем создавать таблицы на основе имен? Почему бы не использовать разделы или хорошие индексы? Соединение по всем таблицам станет беспорядочным быстро ... – tobi6

+0

tobi6 - имена - это просто более простой способ объяснить контекст того, что я делаю. Мне нужно сопоставить схему назначения, которая, к сожалению, разделяется с использованием кодов из первичных ключей основного набора данных. –

ответ

3

Просто чтобы добавить к этому, мне удалось заставить это работать.

enter image description here

  1. tMysqlInput_1 извлекает имена таблиц из information_schema , которые создаются в подзадания
  2. , которые затем переходит к tHashOutput_1.

  3. tHashInput_1 затем подает их на tFlowtoIterate компонент, который итерацию через мою входную работу.

  4. Затем я могу получить доступ к каждому имени таблицы, вызвав (String)globalMap.get("row6.TABLE_NAME")), так как моя схема тишины имеет один столбец, который я назвал 'Table_Name'.

У меня есть несколько действий, которые имеют место в котором я использую Table_Name в фильтре для извлечения только те поля, которые соответствуют имя таблицы, а затем передать его в мой компонент yMysqlOutput, который выглядит следующим образом:

enter image description here

Я протестировал его, и все хорошо. Надеюсь, это может спасти кого-то много времени, выясняя это в будущем (или 5 минут тому, кто намного лучше с Талендом, чем я!).

Спасибо!

1

Крис,

I f вы можете использовать tELTMysqlMap в сочетании с компонентом tELTMysqlOutput, вы сможете это достичь.

У TELTMysqlOutput флажок «Использовать другое имя таблицы», где вы можете указать имя таблицы как переменную контекста или поле ввода из ELTMysqlMap.

Примечание: - Я еще не пробовал.

+0

Спасибо за помощь. Я исследовал tELTMysqlOutput, но поддерживал его с компонентом tMysqlOutput и избегал использования контекстных переменных. –

 Смежные вопросы

  • Нет связанных вопросов^_^