假设有销量表:
1.PowerBI 导入 Html Content对象,并拖入报表
2.新建度量值:
度量值 =
VAR colCount = DISTINCTCOUNT('销量'[产品])
VAR ColumnHeaders =
"<tr><th style='border:1px solid black; padding:5px; text-align:center;' colspan="&colCount&">销量统计</th></tr>"
VAR ColumnList =
CONCATENATEX(//遍历'销量'[产品],并组装<td>
DISTINCT(SELECTCOLUMNS('销量', "col", '销量'[产品])),
"<td style='border:1px solid black; padding:5px; text-align:center;'>" & [col] & "</td>",
""
)
VAR DataRow =
CONCATENATEX(//遍历'销量'[产品]
DISTINCT(SELECTCOLUMNS('销量', "col", '销量'[产品])),
VAR CurrentValue = [col]
VAR FilteredData =
FILTER('销量', '销量'[产品] = CurrentValue)//根据每个产品的值,去取对应的销量值
VAR SumValue = SUMX(FilteredData, '销量'[销量])
RETURN
"<td style='border:1px solid black; padding:5px; text-align:center;'>" & SumValue &
"</td>",
""
)
RETURN
"<table style='border:1px solid Grey; border-collapse:collapse; width:640px'>" &
"<tr>" & ColumnHeaders & "</tr>" &
"<tr>" & ColumnList & "</tr>" &
"<tr>" & DataRow & "</tr>" &
"</table>"
解释一下,关键在于CONCATENATEX函数,它可以遍历 销量表的[产品]字段的值,并把它拼接成table的column header。
计算每个产品对应的销量,也是用CONCATENATEX函数去遍历[产品]
3. 把度量值拖入Html Content的Value字段:
4. 效果:
优点是可以实现一些表格和矩阵无法实现的复杂界面,缺点是不能与其他视觉对象进行交互