Петля в чайнике/ложке/пентахо

У меня есть такой запрос:

SELECT count(distinct ID) FROM TBLC WHERE date BETWEEN ? AND ?;

Я использую Pentaho Spoon. Я использую оператор «Выполнить сценарий SQL». Варианты, которые я вижу, - это выполнить для каждой строки, выполнить как один оператор и подстановку переменных.

Если мне нужно изменить свой запрос или мне нужны другие шаги для реализации, пожалуйста, ответьте.

ИЗМЕНИТЬ:

Я использую Pentaho Spoon для передачи данных из базы данных Infobright (таблица 1, таблица 2) в базу данных Infobright (таблица 3).

Запрос похож на:

SELECT table1.column1, table2.column2
FROM table1 JOIN table2 ON table1.id=table2.id
WHERE table2.date BETWEEN '2012-12-01' AND '2012-12-30'

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

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


person Mario    schedule 31.12.2012    source источник
comment
Можете ли вы более подробно описать, что вы пытаетесь сделать? Я действительно не понимаю, что вы хотите сделать или в чем проблема.   -  person G Gordon Worley III    schedule 01.01.2013
comment
Я отредактировал свой вопрос. Спасибо.   -  person Mario    schedule 07.01.2013


Ответы (3)


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

person G Gordon Worley III    schedule 08.01.2013

Вы можете использовать execute как один оператор и подстановку переменных, поскольку они лучше всего подходят для вашего варианта использования.

Добавьте параметры StartDate и EndDate к преобразованию и используйте их в своем запросе, как показано ниже. Включите «Подстановку переменных» на шаге Выполнение сценария SQL.

SELECT table1.column1, table2.column2
FROM table1 JOIN table2 ON table1.id=table2.id
WHERE table2.date BETWEEN **$StartDate** AND **$EndDate**

Предоставьте значения StartDate и EndDate при выполнении преобразования.

person sandeeppure    schedule 27.08.2015

я предполагаю, что даты находятся в таблице или файле в базе данных, что вы можете сделать, это: создать задание, которое передаст эти параметры в пар и установить переменные. на следующем задании вы можете использовать их как переменную для вашего запроса, используя {date_from} {date to}

таким образом, каждый раз, когда вы запускаете задания, требуется то, что внутри базы данных вам, конечно, нужно обновить date_from и date_to

person itamars    schedule 29.11.2014