我非常精通Excel,但对PowerPivot来说却是新手。我有一个数据集,其中包括每个赛季每场比赛的每个NBA球员的比赛日志,我想要一个新的专栏来计算一个球员在一个特定的夜晚所打的总分钟数。
在Excel中,这将是一个简单的SUMIF:[Minutes] if [Team] = [@Team] and [Date] = [@Date]
我如何在PowerPivot中处理此问题,或者在将数据导入PowerPivot之前需要做些什么?
答案 0 :(得分:1)
这听起来像用一种措施可以更好地解决的问题。请参阅this link on measures vs calculated columns。
Power Pivot模型的典型消耗工具是数据透视表,并且仅对数据透视表中的每个单元重新评估度量。只在模型刷新时重新计算计算列。
这将简单如下:
TotalMinutes:=
SUM(FactGameLog[Minutes])
然后在您的数据透视表中,您可以根据需要将PlayerName,Team和Date带到行,列或过滤器(或切片器)上。
答案 1 :(得分:0)
我最初的反应是这是一个数据透视表/图表设计问题。您是数据透视表,为您查询模型。因此,您可以使用简单的SUM()度量,然后在行分组上按日期,玩家和团队进行切片。或者,您可以添加过滤器以查看单个玩家或团队。
但是,有条件求和的DAX函数,如SUMIF / COUNTIF(还有条件平均值,最小/最大值,计数和其他聚合)。
您需要使用计算出的度量。创建度量时,您将要使用SUMX(对于其他聚合类型也使用COUNTX,AVERAGEX等)。
最大的问题是你要比较的价值在哪里(@Team和@Date)。它们是在另一列,相关表中,还是静止的?
无论如何,sytanx会是这样的。
YourMeasure:= SUMX(TableName,expression)
分钟总计:= SUMX( GAMEDATA, IF([team] =“Team1”&& [Date] = DATE(2015,11,5),[Minutes],BLANK()) )
此示例仅使用硬编码字符串,但您可以根据需要对其进行更改。注意条件逻辑构建到第二个参数中。它将聚合[分钟]字段或具有空值。
希望这有帮助。
答案 2 :(得分:0)
因此,您要处理条件迭代求和,在PowerPivot中,它是通过calculate + filter函数来实现的。例如您的函数:如果[Team] = [@Team]并且[Date] = [@Date] =>出现在PP中,则为[分钟]:
=Calculate(Sum(Table[Minutes]),Filter(Table, [Team] = Earlier([Team])),Filter(Table, [Date] = Earlier([Date])))
在当前方案中,您将对包含团队和日期的每一行的总分钟数求和。