2014-05-19 48 views
4

我想問一個關於Pentaho的問題。我正在使用Pentaho data Integration(水壺)。我想在select語句中使用參數。我搜索了各種論壇,並沒有找到任何解決方案。我的問題是我想從不同的數據庫中獲取結果。我如何使用參數從2個或更多數據庫獲取數據? 我有兩個轉換。select語句中的PDI參數

  1. select catalog_name from information_schema.schemata where catalog_name like "%db"
  2. select data_name from ${catalog_name}.dbo.database_name

有錯誤,即Syntax error or access violation

+0

如果指定別名,那麼您的查詢必須像從INFORMATION_SCHEMA.SCHEMATA, 選擇schemata.catalog_name其中schemata.catalog_name如「%DB」 或者從INFORMATION_SCHEMA不那麼 選擇CATALOG_NAME哪裏像CATALOG_NAME 「%db」 –

+0

謝謝@WorkingHard ..我也有使用變量名稱的問題。 – user3651704

回答

0

這聽起來像你已經正確設置的東西。您有一個工作對查詢1進行了第一次轉換,並將輸出發送到作業結果(行結果)。然後針對每個發現通過模式名稱的架構將變換#2運行一次作爲參數或變量。

如果有任何不正確的地方,請說明您實際上在做什麼。

我猜你錯過了正在檢查表輸入Replace variables in script框唯一在變換2.

同樣地,如果不是這種情況,請添加更多的細節。

2

以下解決方案通過調用第一個SQL語句並使用該語句的結果集的元素作爲參數來調用第二個SQL語句來模仿您的任務。

Transformation and details of first table input

在第二個表輸入?被用作所述參數的佔位符。水壺似乎依次映射傳入的字段。在這種情況下,字段schema_name是第一個字段,因此它將被分配給第一個參數。任何額外的傳入字段將被相應映射。請注意,SQL語句中傳入字段的數量和使用的參數數量必須匹配。否則會引發運行時錯誤。另請注意,我的解決方案中的?可能特定於MySQL語法。從您的SQL語句中的命名模式中,我會假設您正在使用MS SQL Server。所以實際佔位符的命名可能不同。

Configuration Details of table input 2

注意,在這種情況下,是沒有必要的,以紀念腳本替換變量,因爲這些參數並不被視爲變量:

第二個表輸入必須如下配置。條目從步驟插入數據然而,對於每行執行必須適當地設置。