Deneb & PowerBI:风险矩阵项目
Deneb & PowerBI: Risk matrix Project
我目前正在 PowerBI 中处理风险矩阵,我想用 Deneb 创建它。目标是允许交叉过滤的 3x3 矩阵。 David 已经提供了关于 Vega lite 代码的创建支持,但是,一些 PowerBI 特定问题仍然存在。
我目前的进度可以在这里看到:PowerBi File.
现在我面临以下挑战,感谢您帮助我克服这些挑战:
所选单元格应突出显示(参见 sheet 2 作为示例)。作为替代方案,如果至少可以突出显示所选数字,那就太好了。用“__selected__”我很遗憾没有达到objective.
如果空白处出现0就好了
每个单元格之间应该有一个 space 与第 2 页上的单元格相当。
一如既往,我感谢任何解决方案、提示或想法。 :)
好的,请按照以下步骤操作,以获得如下所示的完全有效且交互式的风险矩阵。
- 创建一个伤害维度 table 如下
- 创建曝光维度 table 如下:
- 创建两个与您的事实 table 的关系,如下所示。
创建一个度量如下
风险计数 = COUNTROWS(Sheet1) +0
创建一个新的 Deneb 视觉对象,添加两个维度和度量(确保不要聚合)
- 将此代码放入 Deneb
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {"name": "dataset"},
"width": 500,
"height": 500,
"encoding": {
"y": {
"field": "Exposure",
"type": "ordinal",
"sort": ["high", "medium", "low"]
},
"x": {
"field": "Damage",
"type": "ordinal",
"sort": ["low", "medium", "high"],
"axis": {"labelAngle": 0}
}
},
"layer": [
{
"encoding": {
"opacity": {
"condition": {
"test": {"field": "__selected__", "equal": "off"},
"value": 0.3
}
}
},
"mark": {
"type": "rect",
"color": {
"expr": "(datum['Exposure'] == 'high' & datum['Damage'] == 'high') || (datum['Exposure'] == 'high' & datum['Damage'] == 'medium') || (datum['Exposure'] == 'medium' & datum['Damage'] == 'high') ? 'red' : (datum['Exposure'] == 'medium' & datum['Damage'] == 'medium') || (datum['Exposure'] == 'high' & datum['Damage'] == 'low') || (datum['Exposure'] == 'low' & datum['Damage'] == 'high') ? 'orange': 'green'"
}
}
},
{
"mark": {
"type": "text",
"fontSize": 16,
"fontWeight": "bold",
"color": "white"
},
"encoding": {"text": {"field": "Risk Count", "type": "quantitative"}}
}
],
"config": {"axis": {"grid": true, "tickBand": "extent"}}
}
我目前正在 PowerBI 中处理风险矩阵,我想用 Deneb 创建它。目标是允许交叉过滤的 3x3 矩阵。 David 已经提供了关于 Vega lite 代码的创建支持,但是,一些 PowerBI 特定问题仍然存在。 我目前的进度可以在这里看到:PowerBi File.
现在我面临以下挑战,感谢您帮助我克服这些挑战:
所选单元格应突出显示(参见 sheet 2 作为示例)。作为替代方案,如果至少可以突出显示所选数字,那就太好了。用“__selected__”我很遗憾没有达到objective.
如果空白处出现0就好了
每个单元格之间应该有一个 space 与第 2 页上的单元格相当。
一如既往,我感谢任何解决方案、提示或想法。 :)
好的,请按照以下步骤操作,以获得如下所示的完全有效且交互式的风险矩阵。
- 创建一个伤害维度 table 如下
- 创建曝光维度 table 如下:
- 创建两个与您的事实 table 的关系,如下所示。
创建一个度量如下
风险计数 = COUNTROWS(Sheet1) +0
创建一个新的 Deneb 视觉对象,添加两个维度和度量(确保不要聚合)
- 将此代码放入 Deneb
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {"name": "dataset"},
"width": 500,
"height": 500,
"encoding": {
"y": {
"field": "Exposure",
"type": "ordinal",
"sort": ["high", "medium", "low"]
},
"x": {
"field": "Damage",
"type": "ordinal",
"sort": ["low", "medium", "high"],
"axis": {"labelAngle": 0}
}
},
"layer": [
{
"encoding": {
"opacity": {
"condition": {
"test": {"field": "__selected__", "equal": "off"},
"value": 0.3
}
}
},
"mark": {
"type": "rect",
"color": {
"expr": "(datum['Exposure'] == 'high' & datum['Damage'] == 'high') || (datum['Exposure'] == 'high' & datum['Damage'] == 'medium') || (datum['Exposure'] == 'medium' & datum['Damage'] == 'high') ? 'red' : (datum['Exposure'] == 'medium' & datum['Damage'] == 'medium') || (datum['Exposure'] == 'high' & datum['Damage'] == 'low') || (datum['Exposure'] == 'low' & datum['Damage'] == 'high') ? 'orange': 'green'"
}
}
},
{
"mark": {
"type": "text",
"fontSize": 16,
"fontWeight": "bold",
"color": "white"
},
"encoding": {"text": {"field": "Risk Count", "type": "quantitative"}}
}
],
"config": {"axis": {"grid": true, "tickBand": "extent"}}
}