我在Excel中有以下表达式可以正常工作。
=CUBESET("ThisWorkbookDataModel",
"TopCount(
[ProductBV].[Product Name].Children,10,
sum(
(
[Calendar].[Week Ending].[All].[1/6/2013]:[Calendar].[Week Ending].[All].["&TEXT($E$2,"m/d/yyyy")&"],
[ProductBV].[Moderation Status (ALL)].[All].["&$E$3&"]
),
[Measures].[Product Review Count]
)
)",
"Top 10 to date")
使用以下DAX公式计算产品评论计数。
Product Review Count:=COUNTROWS(ProductBV)
但是,当我将DAX度量更改为使用AVERAGE功能(Product Avg Review)时,CUBESET功能无法正常工作。它仍然具有CUBESET中正确数量的项目,但是当我使用CUBERANKEDMEMBER(1-10)时,它没有按平均等级显示前10个产品。
Product Avg Review:=AVERAGE(ProductBV[Rating])
'工作不正常'表达如下:
=CUBESET("ThisWorkbookDataModel",
"TopCount(
[ProductBV].[Product Name].Children,10,
sum(
(
[Calendar].[Week Ending].[All].[1/6/2013]:[Calendar].[Week Ending].[All].["&TEXT($E$2,"m/d/yyyy")&"],
[ProductBV].[Moderation Status (ALL)].[All].["&$E$3&"]
),
[Measures].[Product Avg Review]
)
)",
"Top 10 to date")
总而言之,我的数据非常简单。我有一个数据表连接到日历表,其中包含我的产品名称,评级,日期和审核状态。
用户可以通过下拉菜单更改我的信息中心内的日期($ E $ 2)和评论状态($ E $ 3)。
+-----------------+-------------------+------------+----------------+
| Submission Date | Moderation Status | Product ID | Overall Rating |
+-----------------+-------------------+------------+----------------+
| 10/23/2016 | APPROVED | Product 1 | 5 |
| 10/23/2016 | APPROVED | Product 2 | 5 |
| 10/23/2016 | APPROVED | Product 3 | 5 |
| 10/23/2016 | REJECTED | Product 3 | 3 |
| 10/23/2016 | REJECTED | Product 4 | 3 |
+-----------------+-------------------+------------+----------------+
有谁能告诉我为什么会这样,以及如何解决它?
答案 0 :(得分:2)
这会产生一组CUBESET
。
一个集合有一个计数,所以我可以理解COUNTROWS
将正常运行。
如果您将一组成员提供给AVERAGE
哪个衡量标准是平均值?这似乎不是决定因素吗?
您可以将ProductBV[Rating]
返回的集合提供给后续的多维数据集函数,该函数指定您希望获得平均值的度量吗?
答案 1 :(得分:1)
当我看到你的问题时,我想知道为什么你使用Excel公式和控件来创建仪表板,如果你在PowerPivot中建模的话。 PowerPivot允许您以更健壮,更可靠的方式分析和可视化数据。
您最初的方法非常复杂,很难考虑到这一点:
这是我使用与PowerPivot模型连接的数据透视表构建的仪表板。
要构建此仪表板,我使用了四种DAX措施:
This Week :=
CALCULATE (
[Product Avg Review],
FILTER (
ALL ( Calendar ),
Calendar[Week Ending] <= MAX ( Calendar[Week Ending] )
)
)
Last Week =
CALCULATE (
[Product Avg Review],
FILTER (
ALL ( Calendar ),
Calendar[Week Ending]
<= MAX ( Calendar[Week Ending] ) - 7
)
)
Positive Movement :=
(
CALCULATE (
[Product Avg Review],
FILTER (
ALL ( Calendar ),
Calendar[Week Ending]
<= MAX ( Calendar[Week Ending] ) - 7
)
)
- CALCULATE (
[Product Avg Review],
FILTER (
ALL ( Calendar ),
Calendar[Week Ending] <= MAX ( Calendar[Week Ending] )
)
)
)
* -1
Negative Movement :=
CALCULATE (
[Product Avg Review],
FILTER (
ALL ( Calendar ),
Calendar[Week Ending]
<= MAX ( Calendar[Week Ending] ) - 7
)
)
- CALCULATE (
[Product Avg Review],
FILTER (
ALL ( Calendar ),
Calendar[Week Ending] <= MAX ( Calendar[Week Ending] )
)
)
通过测量工作,您可以创建两个数据透视表,一个用于显示正向移动器,另一个用于显示负向移动器。
注意我的Excel用户界面是西班牙语,我希望你不要被这个困住。只需按照说明操作并在Google中搜索,就会有很多关于数据透视表的资源。
在Rows
窗格中添加Product Name
,在Values
添加Last Week
,This Week
和Positive Movement
或Negative Movement
(根据您正在构建的数据透视表)措施。
一旦你建立了表格,就必须获得TOP X Product Names
。
在每个数据透视表中单击行标记图标过滤器(以下设置适用于Positive Movers数据透视表):
并使用以下设置:
在过滤时,为Positive Movement
更改Negative Movement
以获取否定移动表中的前5 Product Names
。
虽然您可以完全使用DAX获得前5个产品名称,但我认为最好使用数据透视表过滤器选项,使其适用于任意数量的顶级产品(未来可能会成为新的产品)需要修改底层DAX。
然后你只需要添加条件格式就可以了。
如果这有帮助,请告诉我。