DAX 相当于 GROUP BY 和 MIN - 如何按年份计算推出的产品? - DAX / MS Fabric / Power BI

问题描述 投票:0回答:1

我想创建一个度量来计算给定年份中首次售出的产品数量。这意味着如果该产品在之前的任何一年出售,则不应计入当年。

我希望做这样的事情:(可以在此处运行和迭代代码:https://dax.do/fDTAmTl3kDIMaF/

DEFINE MEASURE 'Sales'[m1] = 
    CALCULATE (
        DISTINCTCOUNT (Sales[ProductKey]),
        SUMMARIZECOLUMNS (
                Sales[ProductKey],
                CALCULATETABLE ( Sales,
                        ALL( Sales[Order Date] ),
                        ALL( 'Date'[Date] ),
                        ALL( 'Date'[Calendar Year] )                        
                ),  
                "earliest_sale", MIN( Sales[Order Date] ) 
        ),
        ALL( Sales[Order Date] ),
        ALL( 'Date'[Date] )
    )

EVALUATE
SUMMARIZECOLUMNS (
    'Date'[Calendar Year],
    "number of products sold for the first time", 'Sales'[m1]
)

但是,这会返回以下内容:

日历年 首次售出产品数量
2009 年 1,513
2007 年 1,258
2008 年 1,478

这与我得到的结果完全相同

EVALUATE 

SUMMARIZECOLUMNS (
    'Date'[Calendar Year],
    'Sales',
    "distinct product sales", DISTINCTCOUNT ( Sales[ProductKey] ),
    "total sales", COUNTROWS ( 'Sales' )
)

|日期[日历年] |独特的产品销售|总销售额| | ------------------- | ---------------------- | ----------- | | 2009 年 | 1,513 | 1,513 39,793 | 39,793 | 2007 年 | 1,258 | 1,258 31,682 | | 2008 年 | 1,478 | 1,478 28,756 | 28,756 最后,也许有点疯狂,我尝试了这个:

EVALUATE 

SUMMARIZECOLUMNS (
    'Date'[Calendar Year],
    FILTER( 'Sales',
            Sales[Order Date] = CALCULATE(  MIN( Sales[Order Date] ),
                                            SUMMARIZE ( CALCULATETABLE ( 'Sales',
                                                                          ALL ( Sales[Delivery Date] ),
                                                                          ALL ( 'Date'[Date] ),
                                                                          ALL ( 'Date'[Calendar Year] )
                                                         ),
                                                         Sales[ProductKey]
                                            ),
                                            ALL ( Sales[Delivery Date] ),
                                            ALL ( 'Date'[Date] ),
                                            ALL ( 'Date'[Calendar Year] )
                                )
    ),
    "distinct product sales", DISTINCTCOUNT ( Sales[ProductKey] ),
    "sales", COUNTROWS ( 'Sales' )
)

并得到: |日期[日历年] |独特的产品销售|销售| | ------------------- | ---------------------- | -----| | 2009 年 | 1,513 | 1,513 39,793 | 39,793 | 2007 年 | 1,258 | 1,258 31,682 | | 2008 年 | 1,478 | 1,478 28,756 |

任何帮助将不胜感激。我想计算每年之前从未售出的产品数量,即当年首次售出的产品数量。

powerbi dax
1个回答
0
投票

尝试这个测量模式:

MyMeasure2 = 

VAR ProdSummary = 
SUMMARIZECOLUMNS(
    Sales[Product ID]
    , "earliest"
    , MINX(Sales, [Order Date])
)

VAR thisYear = ALLSELECTED('_Date Table'[Date]) //Gets all dates for CY Year

VAR prodCount = CALCULATE(COUNTROWS(ProdSummary)
            , FILTER(ProdSummary
                    , [earliest] in thisYear
            )
)

RETURN prodCount

输出示例:

fixed image

我的

_Date Table[Date]
与我的
Sales[Order Date]
有关系。


用于此答案的示例销售数据:

订购日期 产品编号
2022-02-04 P006
2023-01-21 P012
2021-01-11 P020
2023-05-21 P010
2021-11-14 P007
2022-12-08 P012
2023-04-27 P006
2020-05-17 P006
2023-08-03 P016
2021-08-24 P003
2023-02-23 P010
2022-02-07 P005
2023-05-11 P011
2022-11-18 P008
2020-03-10 P012
2022-09-01 P009
2021-03-25 P010
2021-08-18 P020
2024-06-04 P018
2022-02-28 P003
© www.soinside.com 2019 - 2024. All rights reserved.