gpt4 book ai didi

powerbi - 自定义 Power BI 可视化中的 "Total rows"

转载 作者:行者123 更新时间:2023-12-02 15:28:20 24 4
gpt4 key购买 nike

我对创建 custom visualization 有疑问在 Power BI 中。

我想实现内置矩阵可视化中提供的“总行”功能。主要概念是自动对每个值求和并按行对其进行分组。这就是矩阵可视化的样子: Built-in matrix "total rows" functionality

但是,说实话,我不知道如何实现这一目标。我尝试了不同的方法,但无法在 dataView 中接收到这些分组值。

我尝试分析内置的matrix.ts code但它与自定义可视化代码有很大不同。我找到了customizeQuery将 subtotalType 属性设置为行和列的方法 - 我尝试将其添加到我的代码中,但我在 dataViews 中没有看到任何差异(我没有找到分组值)。

目前我的capability.dataViewMappings设置如下:

            dataViewMappings: [
{
conditions: [
{ 'Rows': { max: 3 } }
],
matrix: {
rows: {
for: { in: 'Rows' },
},
values: {
for: { in: 'Values' }
},
},
}
]

有谁知道我们如何实现这个“总行”功能?

更新1

我已经找到了解决方案:当我们实现customizeQuery方法时(与matrix.ts代码中的customizeQuery方法相同),然后在powerbi.visuals.plugins.[visualizationName+visualizationAddDateEpoch].customizeQuery 然后它按预期工作(我在 dataViews[0].matrix.row.root 子元素中收到具有行中的总值)。

现在唯一的问题是我不知道如何正确添加对 customizeQuery 方法的引用。例如,[visualizationName+visualizationAddDateEpoch]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 浏览器(基于 Web)中的 Power BI。在 Power BI Desktop 上,不会调用 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 开发工具,我们无法向这部分代码添加其他内容。有什么想法吗?

最佳答案

您似乎缺少功能中的列映射。看看matrix capabilities (也复制如下以供引用)并作为第一步最初采用该结构。该矩阵计算行和列的交集,因此如果没有功能中的列,您是否会得到您想要的东西值得怀疑。

其次,在传递给 Update 的矩阵数据 View 中,您将获得一个带有 isSubtotal: true 的“DataViewMatrixNode”,看看 unit tests for matrix查看结构。

        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' }
}
}
}],

关于powerbi - 自定义 Power BI 可视化中的 "Total rows",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34920331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com