1
我正在研究一個從數據庫讀取數據的ETL腳本,使用Java對其進行操作並最終將其寫入CSV文件。我的腳本如下所示:有條件地使用Scriptella寫入CSV文件
<query connection-id="db">
SELECT COLUMN_A AS A, COLUMN_B AS B
FROM DATABASE_TABLE
<script connection-id="java">
System.setProperty("a",String.valueOf(get("A")));
System.setProperty("b",String.valueOf(get("B")));
</script>
<script connection-id="csv_out">
$a,$b
</script>
</query>
腳本工作方式使我在查詢結果中爲每行寫入一行到CSV文件。但是我需要的是創建比查詢結果更多或更少的行的方法。因此,我希望根據Java部分中設置的值對CSV文件執行條件輸出:
<script connection-id="java">
System.setProperty("a",String.valueOf(get("A")));
System.setProperty("b",String.valueOf(get("B")));
</script>
// only create line when 'a' has specific value, e.g. '1'
<script connection-id="csv_out" if="$a == 1">
$a,$b
</script>
此方法不起作用。即使將「a」的值明確設置爲1,它也不會向CSV寫入任何內容。那麼在Scriptella中執行有條件的腳本執行的正確方法是什麼?還是有更好的解決方案?