我想在给定的持续时间内为行写一个ETL。
我正在考虑在etl.properties
中传递start_time和end_time。但是,如果属性文件没有定义默认值,我不知道如何定义默认值。
我在考虑类似的东西,但不确定这是否可能。
<script connection-id="in" if="not properties.start_time">
select @starttime := last_day(now() - interval 1 month);
</script>
如果未定义properties.start_time,请使用从现在开始一个月的开始时间值。
我该怎么做呢。
由于
答案 0 :(得分: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)));