Powerbi &引用;“行总数”;在自定义电源BI可视化中
我有一个关于创建in-Power BI的问题 我想实现内置矩阵可视化中提供的“总行”功能。主要概念是自动汇总每个值并按行分组。这是矩阵可视化上的外观: 但是,老实说,我不知道如何做到这一点。我尝试了不同的方法,但无法在DataView中接收此分组值 我试图分析内置的,但与自定义可视化代码完全不同。我找到了将subtotalType属性设置为rows和columns的方法-我试图在代码中添加该属性,但在DataView中没有发现任何差异(我没有找到分组值) 当前my capabilities.dataViewMappings的设置如下:Powerbi &引用;“行总数”;在自定义电源BI可视化中,powerbi,Powerbi,我有一个关于创建in-Power BI的问题 我想实现内置矩阵可视化中提供的“总行”功能。主要概念是自动汇总每个值并按行分组。这是矩阵可视化上的外观: 但是,老实说,我不知道如何做到这一点。我尝试了不同的方法,但无法在DataView中接收此分组值 我试图分析内置的,但与自定义可视化代码完全不同。我找到了将subtotalType属性设置为rows和columns的方法-我试图在代码中添加该属性,但在DataView中没有发现任何差异(我没有找到分组值) 当前my capabilities.d
dataViewMappings: [
{
conditions: [
{ 'Rows': { max: 3 } }
],
matrix: {
rows: {
for: { in: 'Rows' },
},
values: {
for: { in: 'Values' }
},
},
}
]
有人知道我们如何实现“总行”功能吗
更新1
我已经找到了解决方案:当我们实现customizeQuery
方法时(与matrix.ts代码中的方法相同),然后在powerbi.visuals.plugins.[VisualizationName+VisualizationAddDateEpoch].CustomizeEquary中添加对它的引用,那么它就会按预期工作(我在数据视图[0]中收到).matrix.row.root
具有来自行的总值的子元素)
现在唯一的问题是,我不知道如何正确地将此引用添加到customizeeQuery
方法。例如,[VisualizationName+VisualizationAddDateEpoch]
是Custom1451458639997
,我不知道这些数字是什么(我只知道名称)。我在我的可视化构造函数中创建了如下代码(它正在工作):
但在我看来,这个代码是非常肮脏和不雅的。我想改进它——告诉Power BI我们实现了customCustomizeEquiry
方法并且它应该使用它的正确方法是什么
更新2
来自更新1的代码仅适用于web浏览器中的Power BI(基于web)。在Power BI桌面上,不会调用customizeequiry
方法。告诉Power BI使用我们的customCustomizeEquiry
方法的正确方法是什么?在使用PowerBIVisualPlayground的代码中,我们可以在文件中声明它(与matrix visual一样):
但是,在我看来,从Power BI Dev工具中,我们无法向这部分代码添加额外的内容。有什么想法吗?您似乎缺少功能中的列映射。看一看(下面也复制了供参考)并作为第一步,最初采用该结构。矩阵计算行和列的交集,因此,如果没有列,您可能会得到您想要的
其次,在传递给Update的矩阵dataview中,您将获得一个带有isSubtotal:true的“DataViewMatrixNode”查看以查看结构
dataViewMappings: [{
conditions: [
{ 'Rows': { max: 0 }, 'Columns': { max: 0 }, 'Values': { min: 1 } },
{ 'Rows': { min: 1 }, 'Columns': { min: 0 }, 'Values': { min: 0 } },
{ 'Rows': { min: 0 }, 'Columns': { min: 1 }, 'Values': { min: 0 } }
],
matrix: {
rows: {
for: { in: 'Rows' },
/* Explicitly override the server data reduction to make it appropriate for matrix. */
dataReductionAlgorithm: { window: { count: 500 } }
},
columns: {
for: { in: 'Columns' },
/* Explicitly override the server data reduction to make it appropriate for matrix. */
dataReductionAlgorithm: { top: { count: 100 } }
},
values: {
for: { in: 'Values' }
}
}
}],
你好,卢卡斯谢谢你的回答。我检查了一下,这似乎没有改变什么。我已经找到了解决方案,并在第一篇文章(请参阅更新1)中编辑了我的问题,在这里我使用了customizeQuery
方法-但我仍然有一个问题,如何正确地做到这一点,也许你会有一些建议?我提出的解决方案在我们声明或不声明功能中的列时都有效。我认为如果您将此作为一个问题发布在visuals Github repo中,您可能会得到答案。。
export let matrix: IVisualPlugin = {
name: 'matrix',
watermarkKey: 'matrix',
capabilities: capabilities.matrix,
create: () => new Matrix(),
customizeQuery: Matrix.customizeQuery,
getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => Matrix.getSortableRoles(),
};
dataViewMappings: [{
conditions: [
{ 'Rows': { max: 0 }, 'Columns': { max: 0 }, 'Values': { min: 1 } },
{ 'Rows': { min: 1 }, 'Columns': { min: 0 }, 'Values': { min: 0 } },
{ 'Rows': { min: 0 }, 'Columns': { min: 1 }, 'Values': { min: 0 } }
],
matrix: {
rows: {
for: { in: 'Rows' },
/* Explicitly override the server data reduction to make it appropriate for matrix. */
dataReductionAlgorithm: { window: { count: 500 } }
},
columns: {
for: { in: 'Columns' },
/* Explicitly override the server data reduction to make it appropriate for matrix. */
dataReductionAlgorithm: { top: { count: 100 } }
},
values: {
for: { in: 'Values' }
}
}
}],