微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个不相关的dataViewMappings用于自定义视觉效果Power BI Report Server

如何解决多个不相关的dataViewMappings用于自定义视觉效果Power BI Report Server

Power BI Report Sever创建自定义视觉效果存在一个众所周知的问题-您无法创建多个不相关的dataViewMappings。这意味着您在Fields内输入的每个字段必须相关

用户一直要求添加功能

但是,看来Microsoft尚未实现。

https://github.com/Microsoft/PowerBI-visuals/issues/251

我找到了一种解决方法-您可以将所有不同的表组合在一起,并用一个tableName键进行链接

例如,您有一个table A

value1|value2|tableName
1|2|tableA
3|4|tableA

一个table B

value3|tableName
a|tableB
b|tableB

您可以使用tableC函数M或其他技术来创建Table.Combine({tableA,tableB})。结果,它看起来像这样:

value1|value2|value3|tableName
1|2|null|tableA
3|4|null|tableA
null|null|a|tableB
null|null|b|tableB

然后,在您的自定义视图中实现以下用于解析输入的函数

    public parSEOptionsToTables(options: VisualUpdateOptions) {
        var i: number;
        var j: number;

        var cntRows: number;
        var cntCols: number;
        var naMetable: string;
        var tempDict: {} = {};
        var tempVal: any;
        var colName: string;

        var cats: any = options.dataViews[0].table;

        this.tables = {};

        cntCols = cats.columns.length;
        cntRows = cats.rows.length;

        for (i = 0; i < cntRows; i++) {

            tempVal = null;
            colName = null;
            naMetable = null;
            tempDict = {};

            for (j = 0; j < cntCols; j++) {

                //for every row - check the TableName column and add to dict 

                tempVal = cats.rows[i][j];
                colName = cats.columns[j].displayName;


                if (colName == 'tableName') {

                    naMetable = tempVal;

                } else {

                    //add id not null
                    if (tempVal !== null) {

                        tempDict[colName] = tempVal;

                    }

                }

            }

            //push to dict

            this.tables[naMetable] = this.tables[naMetable] || [];
            this.tables[naMetable].push(this.deepcopy(tempDict));

        }

    }

结果,它创建了一个this.tables对象,其中包含您的tableAtableB

尽管它有助于解决主要问题,但我仍然无法摆脱创建拐杖的感觉。 那么,还有其他方法可以更有效地解决这个问题吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。