多个不相关的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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...