我有一个名为会议的事实表,其中包含以下内容: -员工 - 分钟 -输入
然后我用以下内容创建了一个汇总表:
TableA =
SUMMARIZECOLUMNS (
'meetings'[staff]
, 'meetings'[type]
, "SumMinutesByStaffAndType", SUM( 'meetings'[minutes] )
)
这将创建一个数据透视表,其中人员作为行,列作为类型。
对于此数据透视表,我需要将每个单元格计算为列总数的百分比。对于每个员工,我需要平均百分比。会议类型只有5种,因此我需要将这些百分比之和除以5。
我不知道如何将由两列分组的一个数字除以由一列分组的另一个数字。我来自SQL世界,所以我的DAX非常糟糕,我迫切希望获得建议。
我尝试创建另一个汇总表来获取每种类型的分钟总数。
TableB =
SUMMARIZECOLUMNS (
'meetings'[type]
, "SumMinutesByType", SUM( 'meetings'[minutes] )
)
从那里我想要'TableA'[SumMinutesByStaffAndType] /'TableB'[SumMinutesByType]。
TableC =
SUMMARIZECOLUMNS (
'TableA'[staff],
'TableB'[type],
DIVIDE ( 'TableA'[SumMinutesByType], 'TableB'[SumMinutesByType]
)
“无法确定表'Min by Staff-Contact'中'Minutes'列的单个值。当度量公式引用的列包含许多值而未指定诸如min,max,计数或求和以获得单个结果。”
我一直在遇到这个错误,这使我相信我不会采用“ Power BI方式”。
我尝试在报告视图上进行度量并创建矩阵。我尝试在查询编辑器中使用分组依据功能。我什至尝试了度量和汇总表。我可能会使它过于复杂,而且超出了预期范围,因此非常感谢您的帮助。
这是我正在尝试做的一个例子。
## Input/First table
staff minutes type
--------- --------- -----------
Bill 5 TELEPHONE
Bill 10 FACE2FACE
Bill 5 INDIRECT
Bill 5 EMAIL
Bill 10 OTHER
Gary 10 TELEPHONE
Gary 5 EMAIL
Gary 5 OTHER
Madison 20 FACE2FACE
Madison 5 INDIRECT
Madison 15 EMAIL
Rob 5 FACE2FACE
Rob 5 INDIRECT
Rob 20 TELEPHONE
Rob 45 FACE2FACE
## Second table with SUM of minutes, Grand Total is column total.
Row Labels EMAIL FACE2FACE INDIRECT OTHER TELEPHONE
------------- ------- ----------- ---------- ------- -----------
Bill 5 10 5 10 5
Gary 5 5 10
Madison 15 20 5
Rob 50 5 20
Grand Total 25 80 15 15 35
## Third table where each of the above cells is divided by its column total.
Row Labels EMAIL FACE2FACE INDIRECT OTHER TELEPHONE
------------- ------- ----------- ------------- ------------- -------------
Bill 0.2 0.125 0.333333333 0.666666667 0.142857143
Gary 0.2 0 0 0.333333333 0.285714286
Madison 0.6 0.25 0.333333333 0 0
Rob 0 0.625 0.333333333 0 0.571428571
Grand Total 25 80 15 15 35
## Final table with the sum of the rows in the third table divided by 5.
staff AVERAGE
--------- -------------
Bill 29.35714286
Gary 16.38095238
Madison 23.66666667
Rob 30.5952381
请让我知道我是否可以澄清一个方面。
答案 0 :(得分:0)
您无需创建其他表;一切都可以(并且应该)通过措施来完成。
首先,创建一个度量:
Type Count = CALCULATE(DISTINCTCOUNT(Meetings[Type]), ALL(Meetings))
此度量将始终返回5(不同会议类型的数量)。我们将在其他公式中使用此度量,而不是将其硬编码为5。这样做的好处是-如果您获得其他会议类型,则无需进行任何更改。
第二,创建一种度量会议纪要的方法(当然,您可以更好地命名它):
Total Minutes = SUM(Meetings[Minutes])
该度量仅汇总所有分钟,我们为方便起见而创建它-避免一次又一次地编写代码(在代码中重复使用度量始终是一个好主意)。
最后,我们为平均会议时间创建一个度量:
Average Minutes =
VAR Type_Count = [Type Count]
VAR Summary_Table =
SUMMARIZE (
Meetings,
Meetings[Staff],
Meetings[Type],
"Minutes per Staff and Type", [Total Minutes],
"Minutes per Type", CALCULATE ( [Total Minutes], ALLEXCEPT ( Meetings, Meetings[Type] ) )
)
RETURN
SUMX (
Summary_Table,
DIVIDE ( [Minutes per Staff and Type], [Minutes per Type] ) / Type_Count
)
结果:
该度量还可以正确计算小计,使您可以深入查看详细信息,例如:
最后一项措施的工作原理:
如果您有任何疑问,请告诉我。
答案 1 :(得分:0)