【问题标题】:Power BI - SQL to DAX?Power BI - SQL 到 DAX?
【发布时间】:2017-06-21 03:20:45
【问题描述】:

我有一个 rdat 字段,我必须将其转换为我知道如何在 sql 中执行的日期字段,但我是 DAX 新手,我不确定如何执行此操作

CONVERT(CHAR(10), DATEADD(d, RDAT_ENTERED +5843, 0), 1)

在 Power BI 中。我可以在 sql 端进行修复,以便它只引入数据,但我仍然想知道这在 BI 中会是什么样子。

【问题讨论】:

  • 什么是 rdat 字段?发布一些示例,如果您可以将该列值转换为字符串,则很有可能您可以在 Power BI 中获得有效日期。
  • 对不起,我们的 rdat 字段包含像这样的值 34575 33123 33123 33123 33123 33123 33123 33123 34586 我可以在 sql 中转换为正确的日期格式,但我只是好奇这将如何完成 power bi跨度>

标签: powerbi dax


【解决方案1】:

我了解您的问题的上下文,并认可@alehandro 的excellent 答案。但是,一些建议的最佳做法:

  • SQL BI 工具
  • 标准数据类型的转换应尽可能低
  • 不应使用幻数DECLARE @EPOCH_RDAT DATE = { d '1916-01-01' };
  • 函数参数应按预期使用:SELECT DATEADD(DAY, RDAT_ENTERED, @EPOCH_RDAT);

【讨论】:

    【解决方案2】:

    您的数据似乎使用 SQL SERVER EPOCH 来表示日期,因此 RDAT_ENTERED + 5843 表示从 1/1/1900 确定的天数。您可以使用该信息通过 DAX 或 Power Query 将其转换为人类日期。

    在 Dax 或 Power Query(非正式地称为“M”)中创建一个计算列

    Power BI 和 Power Pivot 中的 DAX

    HumanDate = DATE(1900,1,1) + [RDAT_ENTERED] + 5843
    

    Power Query 中的 M 语言

    =Date.AddDays(DateTime.FromText("1900-01-01"), [RDAT_ENTERED] + 5843)
    

    如果这有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2021-12-18
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 2016-07-04
      相关资源
      最近更新 更多