如何在 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 数据工厂中永远停留在排队状态?

在 Azure 数据工厂中完成活动后,如何向 Azure 服务总线发送消息

使用 Pandas query() 过滤时间戳列上的数据帧

如何从 Azure 数据工厂安全地调用 Azure 逻辑应用

按时间戳列过滤/选择熊猫数据帧的行