我有一个关于在Power BI中创建自定义可视化的问题。
我想实现“总行”功能,这在内置矩阵可视化中是可用的。主要概念是自动汇总每个值并按行分组。这就是矩阵可视化的外观: 但是,老实说,我不知道如何实现这一点。我尝试了不同的方法,但是无法在数据视图中接收到这些分组值。
我尝试分析内置的matrix.ts代码,但它与自定义可视化代码相差很大。我发现了customizeQuery方法,它将subtotalType属性设置为行和列 - 我尝试在我的代码中添加这个方法,但在dataViews中没有看到任何区别(我没有找到分组值)。
目前我的capabilities.dataViewMappings设置如下:
有人知道我们如何实现这个“总行”功能吗?
更新1
我已经找到了解决方案:当我们实现
现在唯一的问题是我不知道如何正确地添加此引用到
但在我看来,这段代码非常不干净和不优雅。我想改进它 - 告诉Power BI我们实现了自定义的
我想实现“总行”功能,这在内置矩阵可视化中是可用的。主要概念是自动汇总每个值并按行分组。这就是矩阵可视化的外观: 但是,老实说,我不知道如何实现这一点。我尝试了不同的方法,但是无法在数据视图中接收到这些分组值。
我尝试分析内置的matrix.ts代码,但它与自定义可视化代码相差很大。我发现了customizeQuery方法,它将subtotalType属性设置为行和列 - 我尝试在我的代码中添加这个方法,但在dataViews中没有看到任何区别(我没有找到分组值)。
目前我的capabilities.dataViewMappings设置如下:
dataViewMappings: [
{
conditions: [
{ 'Rows': { max: 3 } }
],
matrix: {
rows: {
for: { in: 'Rows' },
},
values: {
for: { in: 'Values' }
},
},
}
]
有人知道我们如何实现这个“总行”功能吗?
更新1
我已经找到了解决方案:当我们实现
customizeQuery
方法(与matrix.ts代码中的customizeQuery方法相同),然后将其引用添加到powerbi.visuals.plugins.[visualisationName+visualisationAddDateEpoch].customizeQuery
中,它就像预期的那样工作(我在dataViews[0].matrix.row.root
中接收到具有总行值的子元素)。现在唯一的问题是我不知道如何正确地添加此引用到
customizeQuery
方法。例如,[visualisationName+visualisationAddDateEpoch]
是Custom1451458639997
,我不知道那些数字会是什么(我只知道名称)。我在我的可视化构造函数中创建了以下代码(它正在工作): constructor() {
var targetCustomizeQuery = this.constructor.customizeQuery;
var name = this.constructor.name;
for(pluginName in powerbi.visuals.plugins) {
var patt = new RegExp(name + "[0-9]{13}");
if(patt.test(pluginName)) {
powerbi.visuals.plugins[pluginName].customizeQuery = targetCustomizeQuery;
break;
}
}
}
但在我看来,这段代码非常不干净和不优雅。我想改进它 - 告诉Power BI我们实现了自定义的
customizeQuery
方法并应该使用它的正确方式是什么?
更新2
更新1中的代码仅适用于基于Web的Power BI(Web浏览器)。在Power BI桌面版本中,customizeQuery
方法不会被调用。告诉Power BI使用我们的自定义customizeQuery
方法的正确方法是什么?在PowerBI-visuals repository的代码中,使用PowerBIVisualPlayground,我们可以在plugin.ts
文件中声明它(就像矩阵可视化一样)。export let matrix: IVisualPlugin = {
name: 'matrix',
watermarkKey: 'matrix',
capabilities: capabilities.matrix,
create: () => new Matrix(),
customizeQuery: Matrix.customizeQuery,
getSortableRoles: (visualSortableOptions?: VisualSortableOptions) => Matrix.getSortableRoles(),
};
但是,我认为从Power BI Dev Tools中,我们无法访问添加额外代码的这一部分。有什么想法吗?