【问题标题】:dax - counting rows between datesdax - 计算日期之间的行数
【发布时间】:2021-07-22 00:55:16
【问题描述】:

我有一张这样的桌子

Account   Open        Close
1         01/01/2018  01/01/2019
2         01/01/2018  01/01/2020
3         01/01/2019  01/01/2021
4         01/01/2021  
5         01/01/2019  01/01/2020

我有兴趣计算每年年底仍然活跃的帐户数量:

Year  Count
2018   2
2019   3
2020   1
2021   1

我不确定这是否可以从Account 表本身推导出来,因此我创建了一个日期跨度多年的日期表。我添加了一个类似的列

active_accounts = countrows ( Accounts, FILTER ( Accounts[Open] >= Date_table[Date] && Date_table[Date] < Accounts[Close]

该公式似乎作为一个添加列工作,但由于日期表包含许多日期,因此计算时间非常长。所以我尝试使用公式作为 DAX 度量,但在多个表之间比较列似乎有问题:

a single value for column 'Date' in table 'date_table' can't be determined. This can happen when a measure refers to a column containing many values without specifying aggregation

计算特定年份的活跃帐户数量的最简单方法是什么?这可以在没有日期表的情况下完成吗?

编辑:用min()max() 括起来date_table[date] 使测量有效,但数字不正确。 -进一步的研究表明这可能需要CROSSJOIN()

编辑:看起来这可以通过在FILTERINGDate_table.Date 大于Open 但小于Close

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    您已经创建了一个日历表,您可以通过以下措施实现最终目标

    _mX:= 
    VAR _1 =
        GENERATEALL (
            'fact',
            DATESBETWEEN ( 'Calendar'[Calendar_Date], 'fact'[Open], 'fact'[Close]-1 )
        )
    VAR _2 =
        ADDCOLUMNS (
            _1,
            "Calendar_Year",
                CALCULATE (
                    MAXX (
                        FILTER ( 'Calendar', 'Calendar'[Calendar_Date] = [Calendar_Date] ),
                        'Calendar'[Calendar_Year]
                    ) + 0
                )
        )
    VAR _3 =
        SUMMARIZE ( _2, [Calendar_Year], [Account] ) 
    VAR _4 =
        GROUPBY ( _3, [Calendar_Year], "count", COUNTX ( CURRENTGROUP (), [Account] ) ) 
    VAR _5 =
        ADDCOLUMNS (
            'Calendar',
            "ct",
                CALCULATE (
                    MAXX (
                        FILTER ( _4, [Calendar_Year] = MAX ( 'Calendar'[Calendar_Year] ) ),
                        [count]
                    )
                )
        )
    RETURN
        MAXX ( _5, [ct] )
    

    该度量取决于具有最少列的日历表,例如以下,并且日历与事实无关

    | Calendar_Date | Calendar_Year |
    |---------------|---------------|
    | 1/1/2018      | 2018          |
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多