【问题标题】:How to join 2 tables in Power BI with condition involving a 3rd table如何在 Power BI 中加入 2 个表,条件涉及第 3 个表
【发布时间】:2020-11-18 03:06:46
【问题描述】:

我有 3 个表,Company、Address 和 C_detail。我需要从 C_detail 表中计算有多少具有特定 C_ID 的公司。但存在的关系是 Company(CompanyID)=Address(CompanyID), Address(CountryID)=C_detail(CountryID)。确切地说,我需要将此 sql 转换为 Power BI。

SELECT COUNT (*)
FROM Company a
JOIN Address b ON a.CompanyID = b.CompanyID
WHERE b.CountryID IN ( SELECT CountryID from C_detail WHERE C_ID = '1')

如何使用来自不同表的应用条件加入表? 感谢并注意,我实际上对 DAX 很陌生,因此非常感谢对此进行非常清晰的解释。

【问题讨论】:

    标签: sql sql-server powerbi dax


    【解决方案1】:

    最好的方法是在 powerBI 中创建这 3 个表之间的关系(将过滤器设置为两个方向):

    Company to Address on CompanyID
    Address to C_detail on CountryID
    

    然后您可以创建一个简单的度量 COUNT(Company[CompanyID]) 并使用具有 C_ID 值的切片器

    如果您不想或无法创建关系,您可以通过以下措施获得类似的结果:

    CompanyCount= 
    VAR tbl =
        SELECTCOLUMNS (
            FILTER (
                SUMMARIZE (
                    'Address',
                    'Address'[CompanyID],
                    "valid",
                        CALCULATE (
                            COUNTROWS ( 'Address' ),
                            TREATAS ( VALUES ( 'Detail'[CountryID] ), 'Address'[CountryID] )
                        )
                ),
                [valid] > 0
            ),
            "CompanyID", 'Address'[CompanyID]
        )
    RETURN
        CALCULATE ( COUNTROWS ( 'Company' ), TREATAS ( tbl, 'Company'[CompanyID] ) )
    

    【讨论】:

    • 真的很感激!显然,Address to C_detail on CountryID 是多对多关系,因此它不会变为活动状态。因此,当我使用切片器进行过滤时,它不起作用。另外,当使用您的解决方案时,我的结果返回(Blank),而 sql 将返回一个值给我。
    • 你能操作表格吗?您可以在 Address 和 C_detail 之间建立一个桥接表来摆脱多对多。
    • 嗨@Joao Leal,对不起,我花了更长的时间来学习和完成桥梁。是的,我创建了 Address 和 C_detail 之间的桥梁,称为 Bridge 表。如果我没有错,我应该改变上述措施,是吗?
    • 如果你有桥接表,那么你应该可以有一个普通的COUNT(Company[CompanyID])
    • 啊,是的,它成功了!非常感谢先生。好吧,有一件事。结果因我的 SQL 返回的内容而异。例如 C_ID = 1,在 SQL 中返回计数为 830,而 Power BI 显示为 827。我在哪里可以检查为什么这些值不同?如果可以在这里问你。
    猜你喜欢
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2019-08-12
    • 2021-11-05
    相关资源
    最近更新 更多