【问题标题】:DayOfWeek function dynamically in Azure Data FactoryAzure 数据工厂中的 DayOfWeek 函数动态
【发布时间】:2020-08-18 19:32:57
【问题描述】:

我有这样的列 abc - 11/04/2020 1:17:40 日期格式我想创建一个派生列,我需要为 abc 列中存在的每一行动态地dayOfWeek

我尝试在 adf 中使用派生列,但它没有显示所有内容都为 NULL 的那一天。

下面是数据流管道的图像,我在其中尝试使用表达式添加派生列。我尝试在那里传递 abc 列,但没有用它没有来。

我该如何解决这个问题?

【问题讨论】:

  • toDate() 函数中的值是什么样的?如果转换失败,我想你会得到 NULL 回来。您可能需要指定日期格式才能进行转换:docs.microsoft.com/en-us/azure/data-factory/…
  • 我尝试在 toDate() 中添加列名,即 abc,因为我想获取源中存在的所有行的日期。
  • 基本上我不想在 toDate() 函数中添加单个日期数据,它应该动态地从函数中指定的列名中获取日期,并在派生列中给出日期名称。希望我能够理解我的查询
  • 我知道需要它是动态的,但是您要转换的日期数据的格式是什么?我的观点是,如果转换失败,你会期望得到 NULL。
  • 是的,Joel,我的格式不对,谢谢指出,还有一个问题,有没有办法打印星期几的名称?

标签: azure azure-functions azure-sql-database azure-data-factory-2


【解决方案1】:

您可以使用以下表达式,添加日期格式:

dayOfWeek(toDate(abc,'MM/dd/yyyy'))

我测试过,效果很好:

更新:

对于您的另一个问题,我们可以使用case 来实现:

case(dayOfWeek(toDate(abc,'MM/dd/yyyy'))==0,'Sunday',
dayOfWeek(toDate(abc,'MM/dd/yyyy'))==1,'Monday',
dayOfWeek(toDate(abc,'MM/dd/yyyy'))==2,'Tuesday',
dayOfWeek(toDate(abc,'MM/dd/yyyy'))==3,'Wednesday',
dayOfWeek(toDate(abc,'MM/dd/yyyy'))==4,'Thursday',
dayOfWeek(toDate(abc,'MM/dd/yyyy'))==5,'Fraiday',
dayOfWeek(toDate(abc,'MM/dd/yyyy'))==6,'Saturday'
 )

截图:

【讨论】:

  • 谢谢,我使用了错误的格式,还有一个问题是有什么方法可以得到 dayOfweek 名称,就像我们得到 4 一样,所以输出应该是“星期四”。我不确定是否会发生这种情况,但如果它像这样工作那就太好了
  • @SHIBASHISHTRIPATHY 不客气。如果我们想让 dayOfWeek() '4' 变成 'Thursday',使用 if 或 case 表达式可以实现。我不确定,但我会试试的。如果我的回答对你有帮助,希望你能采纳。这对其他社区成员可能是有益的。谢谢。
  • 嗨@SHIBASHISHTRIPATHY,我知道了,请看我的更新!
【解决方案2】:

你试过了吗?一个非常简单的。在这里您可以使用变量 'abc' 而不是 UTC 时间。

@formatDateTime(utcnow(),'dddd')

【讨论】:

    猜你喜欢
    • 2020-11-25
    • 2021-08-29
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2022-11-22
    • 1970-01-01
    相关资源
    最近更新 更多