Как экспортировать фактический ТЕКСТ запроса из Pentaho Spoon в файл Excel?

Я использую Pentaho Spoon для интеграции данных (также известный как PDI). Мой внутренний клиент хочет, чтобы отчеты записывались в файлы Excel, и это нормально, но он также хочет видеть запросы, которые я использую, на отдельных вкладках в книге. Есть ли способ использовать Spoon для экспорта фактического текста самого запроса, а не результатов, в файл .xlsx?

Другими словами, если один запрос

ВЫБЕРИТЕ Маппеты, Арахис, Спрайты ИЗ восьмидесятых_shows.childrens_cartoons

Затем я хочу иметь файл Excel, который показывает

ВЫБЕРИТЕ Маппеты, Арахис, Спрайты ИЗ восьмидесятых_shows.childrens_cartoons


person JT Ryan    schedule 06.11.2014    source источник


Ответы (2)


Вы можете использовать ввод таблицы PDI для получения данных из переменной. Попробуйте определить переменную, которая будет содержать все имена столбцов (и другую переменную, содержащую имя таблицы), и попробуйте передать эту переменную на шаг ввода таблицы. Например: на этапе ввода таблицы определите:

Select ${COLUMN VARIABLE} FROM ${TABLE NAME VARIABLE}

Это выполнит ваш запрос. Теперь для создания запроса в вашем Excel используйте шаг «Измененный сценарий Java», чтобы воссоздать ту же структуру. Фрагмент кода JS приведен ниже:

LOOP i=1 till getInputRowMeta().size()

   var fields =getInputRowMeta().getValueMeta(i) /* This will give you the list of Input Columns along with the datatype e.g. Muppets String(100) */

END LOOP

Удалите тип данных из переменной поля и создайте конечную переменную, имеющую конкатенацию

var final_query="SELECT" + cleaned fields variable from the above JS + "FROM" + table name;

Следовательно, вы генерируете запрос, который можете легко вывести в выходной файл Excel.

Это немного длительный процесс. Но я не могу получить никакого другого решения, кроме генерации запроса с использованием вышеуказанного метода. Надеюсь, это решение вам подходит !! :)

person Rishu Shrivastava    schedule 07.11.2014

Большинство современных баз данных поддерживают динамический sql. Если вы используете SQL Server, посмотрите sp_executesql. Все это означает, что ваш код SQL хранится в виде строки и выполняется таким образом.

Теперь перейдем к использованию динамического sql в pentaho ....

Настройте задание, которое создает файл Excel для вывода, а также получает sql, переданный либо при вызове задания, либо из файловой системы. Теперь передайте sql преобразованию внутри задания, которое будет отвечать за заполнение файла Excel. Напишите sql на любой лист, который хотите.

Надеюсь это поможет

person Abercrombieande    schedule 13.11.2014
comment
Кажется, что нет способа сделать это в рамках одного преобразования, что мне нужно было бы выполнить преобразование как часть задания и выполнить другое преобразование, используя тот же запрос и обрабатывая его как текстовый файл. Это правильно? Или есть способ сделать это в рамках той же трансформации? Я спрашиваю об этом, потому что я хотел бы, чтобы изменения, которые я вношу на данном этапе ввода таблицы, выполнялись как в запросе, так и в выходных данных. - person JT Ryan; 17.11.2014
comment
Это действительно все, что я мог придумать на данный момент. Возможно, вы могли бы изменить уровень ведения журнала и проанализировать журнал в файле Excel, но я никогда не пробовал это делать - person Abercrombieande; 18.11.2014