2017-02-22 64 views
0

我有一個包含數字的列的數據集。但是,該列中的某些行缺少數據。一個短劃線( - )被放置在單元格中,而不是數字。在Pentaho中過濾行

我想要發生的是用破折號分隔這些行,並將它們輸出到單獨的excel文件。那些沒有破折號的,應該輸出到一個csv文件。

我試着「過濾器行」,但它給我一個錯誤:

Unexpected conversion error while converting value [constant String] to a Number 

constant String : couldn't convert String to number 

constant String : couldn't convert String to number : non-numeric character found at position 1 for value [-] 

我的條件是,如果

Column1 CONTAINS - (String) 
+2

是您的來電字段定義爲一個數字可能?最好將其定義爲字符串,然後在過濾後再將「好」行轉換爲數字。 – Cyrus

回答

0

您可以將缺失值指標(如破折號或任何其他字符串)在文本文件輸入中爲空 - 請參閱字段選項「空如果」。這樣,您仍然可以使用元數據檢測功能,並且不會通過到達數字字段的短劃線來跳過。

對於CSV文件輸入,您應該堅持使用字符串數據類型,直到Null-If步驟清除了值,以便您可以在選擇值步驟中將數據類型更改爲數字。

如果您必須保留短劃線字符,請不要使用元數據檢測(因爲它建議使用數字類型Number)或使用更多行進行採樣(因此會遇到帶有短劃線的字段),或者只是先將數據類型恢復爲String保存並運行轉換。

0

我的解決方案在於第一個'替換爲字符串'。我將短劃線替換爲數字,並且可以輕鬆地將其與其餘數字區分開來(我使用了9999),並將其與我的其餘過程繼續進行。

在過濾行中,我對數據類型不再有任何問題,因爲我的變量和條件都包含數字,因此它不再需要轉換任何東西。

過濾行後,我添加了'Null-if'來刪除隨機9999,我使用 只是爲了有一些東西來代替短劃線。

之後,分離就像我希望的一樣。

感謝@marabu的Null-if想法。

See image

0

你不能嘗試轉換爲數字在選擇步驟和處理程序中的錯誤,如果不能轉換爲數字,表示爲( - )

enter image description here