【问题标题】:Custom Calendar for sales data aggregated by weeks and months按周和月聚合的销售数据的自定义日历
【发布时间】:2019-11-18 15:19:43
【问题描述】:

我正在努力创建自定义日历,这将允许我对已经按周和月聚合的数据使用时间智能功能。带有事务的原始表包含超过 20M 行,因此出于性能和节省空间的原因,分组是必要的,我在 SQL Server 中查询数据库时执行它。我要创建:

  • 与去年同月对比

  • 上周与去年同一周

  • 年初至今与去年年初至今(按月)

  • 年初至今与去年年初至今(按周)

我的想法是为每行数据分配一些虚拟日期,然后创建自定义日历,其中包含每个虚拟日期以及其他详细信息。我只是无法弄清楚关键(如何创建具有年号月号和周号的虚拟日期 - 请记住,例如 2020 年的第 5 周部分在 1 月,部分在 2 月)

有可能吗?也许我必须创建 2 个单独的日历,一个用于周,一个用于月?

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    添加计算表:

    Calendar = 
    GENERATE (
        CALENDAR (
            DATE ( 2016,  1,  1 ),
            DATE ( 2020, 12, 31 )
        ),
        VAR VarDates = [Date]
        VAR VarDay = DAY ( VarDates )
        VAR VarMonth =  MONTH ( VarDates )
        VAR VarYear = YEAR ( VarDates )
        VAR YM_text = FORMAT ( [Date], "yyyy-MM" )
        VAR Y_week = YEAR ( VarDates ) & "." & WEEKNUM(VarDates)
    
        RETURN
            ROW (
                "day"     , VarDay,
                "month"   , VarMonth,
                "year"    , VarYear,
                "YM_text" , YM_text,
                "Y_week"  , Y_week
            )
    )
    

    您可以自定义它。在关系窗格中,将 FactTable 的 Date 字段(如您所说的按周。准确地说,此表可能缺少日期和重复的日期)到 Calendar 表的字段 Date(按天具有唯一的日期) .然后,在您的所有视觉对象或度量中,始终使用日历表的日期字段。在 FactTable 中隐藏字段 Date 是一种很好的做法。

    更多解释在这里https://stackoverflow.com/a/54980662/1903793

    【讨论】:

    • 感谢您的评论。但是,如果我的 FactTable 有 Date 字段,那将是个好主意……正如我所提到的,数据已经按周汇总。这意味着一周内我只有一个值表示整周的销售额总和(例如,标有“2019.32”的行表示 2019 年第 32 周的销售额)。如果我填写了日期,那将意味着数据按天汇总并实现我需要的内容会简单得多。但正如我还提到的,在我的工作环境中,20M 行不会加载到模型中。
    • (1) 我会修改输入数据。通过添加 Date.StartOfWeek(Date.AddWeeks(#date([Year], 1, 1), [Week]-1), Day.Monday) 或在 DAX 添加计算列在 M(电源查询)中执行此操作。将“2019.32”转换为 yyyy-MM-dd。 (2) 或者试试这个,在日历表中添加字段 yyyy-WeekNum 并通过该字段连接关系窗格中的表。
    • 我在回答中编辑了日历表。你有 Y_week 列。将其连接到您的 FactTable。但是,出于性能原因,我建议创建与日期而不是文本字段的关系。在源数据中获取一周的开始日期,并将该日期连接到您的日历。
    • 顺利 :) 谢谢
    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多