2

指定された期間内に行の ETL を書きたいです。

で start_time と end_time を渡すことを考えていetl.propertiesます。ただし、プロパティ ファイルにデフォルトが定義されていない場合、どのようにデフォルトを定義すればよいかわかりません。

私は何かを考えていましたが、これが可能かどうかはわかりません。

<script connection-id="in" if="not properties.start_time">
    select @starttime := last_day(now() - interval 1 month);
</script>

properties.start_time が定義されていない場合は、開始時刻の値を今から 1 か月として使用します。

どうすればいいですか。

ありがとう

4

1 に答える 1

1

<include>要素の後に代入を追加することで、プロパティのデフォルト値を設定できます。例:

<properties>
    <include href="etl.properties"/>
    <!-- The new value is set only if it was not defined before -->
    start_time=value 
</properties>

同じプロパティの宣言が複数ある場合は、最初に宣言されたものが後続の宣言よりも優先されます。<include>これが、上記の例で最初に来る理由です。

- - アップデート - -

別のオプションは、三項式、たとえば ${start_time==null?'':a} または多くのデータベースでサポートされている COALESCE SQL 関数を使用することです。後者はあなたの例により適しているはずです。このようなものがうまくいくかどうか試してください:

INSERT INTO SomeTable VALUES (COALESCE(?start_time, last_day(now() - interval 1 month)));
于 2013-07-01T15:22:14.163 に答える