簡體   English   中英

如何在Pentaho Data Inegration(釜)中不返回匹配行?

[英]How to return no matched row in Pentaho Data Inegration (Kettle)?

我正在尋找一種在Pentaho Data Integration中執行SSIS查找的解決方案。 我將嘗試舉例說明:我有兩個表A和B。這里,表A中的數據:1 2 3 4 5這里,表B中的數據:3 4 5 6 7經過我的過程:A中的所有行而不是B ==>將插入到B中,而不是A中的所有行==>都將刪除到A中,那么我的最終表B:3 4 5 1 2有人可以幫我嗎?

確實有一個步驟可以做到這一點,但它並不是一個人就能做到。 這是“ Merge rows(diff)步驟,它有一些要求。 在您的情況下,A是“比較”表,而B是“參考”表。

首先,兩個輸入(在您的情況下為A和B的行,在我的情況下為Dev和Prod)都需要按鍵值進行排序。 在該步驟中,您指定要匹配的鍵字段,然后指定要比較的值字段。 該步驟將一個字段添加到輸出中(默認情況下稱為“ flagfield”)。 比較每行之后,為該字段提供以下四個值之一:“新”,“已更改”,“已刪除”或“相同”。 請注意,在下面的示例中,我有明確的排序步驟。 那是因為我的數據庫的排序方案與PDI的不兼容,並且要執行此步驟,您的數據必須按照PDI的排序順序。 您可能不需要這些。

您可以Synchronize after merge步驟Synchronize after merge此步驟,以應用識別的更改。 在此步驟中,您將指定標志字段以及與插入,更新和刪除相對應的值。 僅供參考,這些是在“高級”標簽上指定的,必須填寫它們才能使該步驟起作用。

對於像您的示例這樣的非常小的表,我希望僅使用Table output步驟進行截斷和滿載,但是如果表很大並且更改數量相對較小(<=〜25%)並且復制不可用,這一步通常是要走的路。

在此處輸入圖片說明

在Pentaho中,直接步驟不可用。 有很多方法可以做到這些。

=>編寫sql即可實現您的解決方案。 如果編寫sql的執行速度也更快。

=>使用過濾步驟也可以實現。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM