Power BI/DAX: 按添加的列值筛选 SUMMARIZE 或 GROUPBY
Power BI/DAX: Filter SUMMARIZE or GROUPBY by added column value
由于数据的机密性,我将尝试使用一些随机示例来描述我正在努力解决的问题。
假设我有一个事实 table,其中包含 Power BI 中的发票数据。我需要计算过去 12 个月销售额超过 50,000 欧元的不同产品 ID 的数量,或者更准确地说,是在所选日期之前的 12 个月内。同时,我需要能够将结果缩小到选定的国家/地区、产品组和产品类别。
我已经开始像这样设置 DATESBETWEEN 的日期范围:
productsCount =
VAR lastDay = IF(MAX('Calendar table'[Date]) > NOW(); NOW(); MAX('Calendar table'[Date]))
VAR firstDay = EDATE(lastDay; -12)
RETURN
但后来我迷路了:
CALCULATE(
COUNTROWS('Sales');
SUMMARIZE(
'Sales';
'Sales'[ProductID];
"prodSales"; SUM('Sales'[EUR])
);
DATESBETWEEN('Sales'[Date]; firstDay; lastDay);
ALLEXCEPT(
'Sales';
'Sales'[Product group];
'Sales'[Product category];
'Sales'[Country]
);
[prodSales] > 50000
)
问题是,在计算行数之前,我需要能够按销售额总和筛选汇总数据。
您可以在 power 查询编辑器中创建一个汇总 table,然后在 dax 中创建一个度量来过滤超过 50k 的结果。
我还没有测试过这个,但我认为这样的东西可能会在你总结后过滤的地方工作:
productsCount =
VAR lastDay =
IF (
MAX ( 'Calendar table'[Date] ) > NOW ();
NOW ();
MAX ( 'Calendar table'[Date] )
)
VAR firstDay = EDATE ( lastDay; -12 )
RETURN
COUNTROWS (
FILTER (
CALCULATETABLE (
SUMMARIZE ( 'Sales';
'Sales'[ProductID];
"prodSales"; SUM ( 'Sales'[EUR] )
);
DATESBETWEEN ( 'Sales'[Date]; firstDay; lastDay );
ALLEXCEPT (
'Sales';
'Sales'[Product group];
'Sales'[Product category];
'Sales'[Country]
)
);
[prodSales] > 50000
)
)
在summarise中,我们可以在summarize之后做filter table
我的输入 table 是
我正在写查询
App Downlaod Count =
FILTER(
SUMMARIZE(events_intraday,
events_intraday[event_name],
events_intraday[event_date],
events_intraday[platform],
events_intraday[stream_id],
"Count",CALCULATE(
COUNT(events_intraday[event_name]),
FILTER(events_intraday,
(events_intraday[platform] = "ANDROID" ||
events_intraday[platform] = "IOS")
)
)
),
events_intraday[event_name] = "first_open" &&
(events_intraday[stream_id] = "1415470954" ||
events_intraday[stream_id] = "1420775080")
)
输出是
由于数据的机密性,我将尝试使用一些随机示例来描述我正在努力解决的问题。 假设我有一个事实 table,其中包含 Power BI 中的发票数据。我需要计算过去 12 个月销售额超过 50,000 欧元的不同产品 ID 的数量,或者更准确地说,是在所选日期之前的 12 个月内。同时,我需要能够将结果缩小到选定的国家/地区、产品组和产品类别。
我已经开始像这样设置 DATESBETWEEN 的日期范围:
productsCount =
VAR lastDay = IF(MAX('Calendar table'[Date]) > NOW(); NOW(); MAX('Calendar table'[Date]))
VAR firstDay = EDATE(lastDay; -12)
RETURN
但后来我迷路了:
CALCULATE(
COUNTROWS('Sales');
SUMMARIZE(
'Sales';
'Sales'[ProductID];
"prodSales"; SUM('Sales'[EUR])
);
DATESBETWEEN('Sales'[Date]; firstDay; lastDay);
ALLEXCEPT(
'Sales';
'Sales'[Product group];
'Sales'[Product category];
'Sales'[Country]
);
[prodSales] > 50000
)
问题是,在计算行数之前,我需要能够按销售额总和筛选汇总数据。
您可以在 power 查询编辑器中创建一个汇总 table,然后在 dax 中创建一个度量来过滤超过 50k 的结果。
我还没有测试过这个,但我认为这样的东西可能会在你总结后过滤的地方工作:
productsCount =
VAR lastDay =
IF (
MAX ( 'Calendar table'[Date] ) > NOW ();
NOW ();
MAX ( 'Calendar table'[Date] )
)
VAR firstDay = EDATE ( lastDay; -12 )
RETURN
COUNTROWS (
FILTER (
CALCULATETABLE (
SUMMARIZE ( 'Sales';
'Sales'[ProductID];
"prodSales"; SUM ( 'Sales'[EUR] )
);
DATESBETWEEN ( 'Sales'[Date]; firstDay; lastDay );
ALLEXCEPT (
'Sales';
'Sales'[Product group];
'Sales'[Product category];
'Sales'[Country]
)
);
[prodSales] > 50000
)
)
在summarise中,我们可以在summarize之后做filter table
我的输入 table 是
我正在写查询
App Downlaod Count =
FILTER(
SUMMARIZE(events_intraday,
events_intraday[event_name],
events_intraday[event_date],
events_intraday[platform],
events_intraday[stream_id],
"Count",CALCULATE(
COUNT(events_intraday[event_name]),
FILTER(events_intraday,
(events_intraday[platform] = "ANDROID" ||
events_intraday[platform] = "IOS")
)
)
),
events_intraday[event_name] = "first_open" &&
(events_intraday[stream_id] = "1415470954" ||
events_intraday[stream_id] = "1420775080")
)
输出是