date - Azure 数据工厂 - 组件“派生列”中过去 7 天的日期表达式
问题描述
我对 Azure 数据工厂非常陌生。我使用相同的源表和目标表创建了一个简单的管道。管道应该从源表中获取日期列,将表达式应用于源表中的日期列(数据类型日期如下面的架构中所示),如果日期在last_7_days 列中的最后 7 天或 0 (如在模式中)。
现在,我面临在组件 DerivedColumn 中编写表达式的挑战。我设法用表达式找出了 7 天前的日期:。
总之,这个想法是在目标表中加载 last_7_days 列,如果日期 >= 当前日期 - 间隔 7 天和日期 <= 当前日期,如 SQL 中的值“1”。如果有人可以帮助我,我将不胜感激任何提示和建议。如果您需要更多信息,请告诉我。
仅供参考:源/目标表列日期是静态的,从 2020 年到 2030 年的 10 年日期为 yyyy-mm-dd 格式。ETL 应该每天运行,并且仅将值 1 放入最后 7 天:从当前日期回顾的 last_7_days 列。其他条目必须接收值 0。
解决方案
您当前使用下面的表达式:
case ( date == currentDate(),1, date >= subDays(currentDate(),7),1, date <subDays(currentDate(),7,0, date > currentDate(),0)
如果我们是您,我们还将选择 case() 函数来构建表达式。
关于您在评论中的问题,恐怕没有,没有另一种优雅的方式。为了实现我们的要求,Data Flow 表达式可以很复杂。它可以由许多功能组成。case()函数是最适合您的函数。
它非常清晰易懂。
推荐阅读
- python - Python - 如果未传递所有参数并且不评估 elif 语句,则函数不会返回输出
- netsuite - 显示网络套件中采购订单的“项目”子列表的所有字段
- ignite - 重启 docker 容器时,Ignite 缓存数据丢失
- javascript - 使用相等 (===) 或不相等 (!==) 运算符是否更高效?
- android - 在需要的设备中以编程方式启用自动启动权限
- laravel - Laravel 复杂的地方和地点
- elasticsearch - Elasticsearch - 使字段可聚合但不可搜索
- sql-server - Weka 3.8 - SQL Server 连接
- java - 如何在 Beanshell 中使用或转义 java 8 Lambda 表达式
- android - Android - SMS Retriever API - 计算应用程序的哈希字符串问题