如何在 Azure 数据工厂的数据流中过滤时间戳列
Posted
技术标签:
【中文标题】如何在 Azure 数据工厂的数据流中过滤时间戳列【英文标题】:How to filter timestamp column in Data Flow of Azure Data Factory 【发布时间】:2021-03-01 23:46:22 【问题描述】:我有时间戳列,我在其中编写了以下表达式来过滤该列:
contact_date >= toTimestamp('2020-01-01') &&
contact_date <= toTimestamp('2020-12-31')
它不会抱怨语法,但运行后它不会根据指定的日期进行过滤。简单地说,逻辑是行不通的。有什么想法吗?
数据集中的日期列:
【问题讨论】:
【参考方案1】:请不要使用toTimestamp()
函数。我测试了,你会得到空输出。
我使用Filter active 过滤数据。请使用toString()
并更改如下表达式:
toString(contact_date )>= toString('2020-01-01') && toString(contact_date )<= toString('2020-12-31')
参考我的示例,contact_date
并输出:
【讨论】:
优秀。作品!因此,它需要转换为字符串格式进行比较。不知道。。为什么?这很棘手。 其实toString()也是一个将值转换为日期的函数,我们可以指定日期格式。根据我的经验,我无法比较 ADF 中的时间戳。 我明白了。非常感谢里昂。【参考方案2】:我认为您需要添加日期的小时、分钟和秒部分,或者根据the docs 指定适当的格式字符串,“如果省略时间戳,则默认模式 yyyy-[M]使用了 M-[d]d hh:mm:ss[.f...]。"
【讨论】:
日期完全是默认格式。这就是为什么我没有指定格式。请在我的问题上查看添加的屏幕截图。 @DineshMadhup 您的日期不是完全是默认格式,因为您只包含了年、月和日,而默认值也需要小时、分钟和秒。将您的过滤日期更改为'2020-01-01 00:00:00'
格式并告诉我您的进展情况。【参考方案3】:
hi 输入和操作 or in () 即
(contact_date >= toTimestamp('2020-01-01') && contact_date <= toTimestamp('2020-12-31'))
or
AND(contact_date >= toTimestamp('2020-01-01') , contact_date <= toTimestamp('2020-12-31'))
【讨论】:
以上是关于如何在 Azure 数据工厂的数据流中过滤时间戳列的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure 数据工厂中完成活动后,如何向 Azure 服务总线发送消息