Power Pivot“动态”加入

时间:2017-04-30 17:45:08

标签: excel powerbi powerpivot

我有一种情况,我需要一个多对多的连接 - 我知道这是不可能的。 我有一个事实表和两个维度表。 事实表包含帐号(如GL帐户中)和金额。加上日期字段,因此帐号不是唯一的。 第一个维度表只有一列,列出了可以通过不同方式组合帐户创建的报告。 第二个维度表可以称为“汇总”表。它有3列:报告,帐户和订单项描述字段。后者定义了相应报告中应该映射到帐户的哪一行。

所以我想要一个数据透视表,其中包含行区域中的行项目描述和值区域中的金额。使用一种机制,用户可以指定要查看的报告。但是汇总表和事实表之间的帐户字段的连接是多对多的。如果根据用户选择的特定报告以某种方式过滤汇总表,那么它将成为一对多。因此,“动态”加入了我的头衔。

我一直试图找出某种连接表,但到目前为止没有任何运气。如果有人有任何建议/指示,那将非常感激。

1 个答案:

答案 0 :(得分:0)

我想出了一种方法,可以使用DAX公式计算要放置在“值”区域中的字段。它使用FILTER和CROSSJOIN组合来实现动态连接。请注意,为了使用CROSSJOIN,我在几个字段名称中添加了前缀字母(以使它们唯一)。另外,我认为Report表(我描述的第一个维度表)只有一行 - 包含用户希望查看的报告。

DAX公式如下:

SUMX (
    FILTER (
        CROSSJOIN (
            fBalances,
            FILTER (
                CROSSJOIN (
                    dRollUp,
                    dReport
                ), dRollup[Report] = dReport[uReport]
            )
        ), fBalances[fAccount] = dRollUp[Account]
    ), fBalances[Amount]
)

后续更新:我将其移至Power BI,我在其中添加了一个参数(称为myReport)供用户指定报告。因此我删除了dReport表。

所以Power BI DAX公式变为:

SUMX (
    FILTER (
        CROSSJOIN (
            fBalances,
            FILTER (
                CROSSJOIN (
                    dRollUp,
                    myReport
                ), dRollup[Report] = FIRSTNONBLANK ( myReport[myReport], TRUE() )
            )
        ), fBalances[fAccount] = dRollUp[Account]
    ), fBalances[Amount]
)