如果etl.properties没有列出变量,如何默认变量值

时间:2013-07-01 11:17:08

标签: scriptella

我想在给定的持续时间内为行写一个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,请使用从现在开始一个月的开始时间值。

我该怎么做呢。

由于

1 个答案:

答案 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)));