Powerbi &引用;“行总数”;在自定义电源BI可视化中

Powerbi &引用;“行总数”;在自定义电源BI可视化中,powerbi,Powerbi,我有一个关于创建in-Power BI的问题 我想实现内置矩阵可视化中提供的“总行”功能。主要概念是自动汇总每个值并按行分组。这是矩阵可视化上的外观: 但是,老实说,我不知道如何做到这一点。我尝试了不同的方法,但无法在DataView中接收此分组值 我试图分析内置的,但与自定义可视化代码完全不同。我找到了将subtotalType属性设置为rows和columns的方法-我试图在代码中添加该属性,但在DataView中没有发现任何差异(我没有找到分组值) 当前my capabilities.d

我有一个关于创建in-Power BI的问题

我想实现内置矩阵可视化中提供的“总行”功能。主要概念是自动汇总每个值并按行分组。这是矩阵可视化上的外观:

但是,老实说,我不知道如何做到这一点。我尝试了不同的方法,但无法在DataView中接收此分组值

我试图分析内置的,但与自定义可视化代码完全不同。我找到了将subtotalType属性设置为rows和columns的方法-我试图在代码中添加该属性,但在DataView中没有发现任何差异(我没有找到分组值)

当前my capabilities.dataViewMappings的设置如下:

            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我们实现了custom
CustomizeEquiry
方法并且它应该使用它的正确方法是什么

更新2

来自更新1的代码仅适用于web浏览器中的Power BI(基于web)。在Power BI桌面上,不会调用
customizeequiry
方法。告诉Power BI使用我们的custom
CustomizeEquiry
方法的正确方法是什么?在使用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' }
            }
        }
    }],