【问题标题】:Power BI Relationship if in rangePower BI 关系(如果在范围内)
【发布时间】:2021-03-30 14:48:06
【问题描述】:

我有一个像(表 A)这样的表(实际大小超过 1 亿条记录)

ID Name
90 A
110 B

还有一个(表B)

ID_MIN ID_MAX CAT
80 100 Cat1
102 115 Cat2

我想在 POWER BI 中的这些表之间创建关系以进行建模。一定是这样的; IF(表 A)ID 介于 ID_MIN 和 ID_MAX 之间。

我可以很容易地在 sql 中做到这一点,比如 ; ... 在 ID>=ID_MIN 和 ID 上

但在 Power BI 中没有这样的选项。

而且我不想在我的事实表中创建带有连接的列,因为它非常大。

您需要知道,对于真正的表 B,我希望在我的数据模型中看到更多列。

有什么想法吗?

【问题讨论】:

    标签: powerbi relational-database ssas dax data-modeling


    【解决方案1】:

    这可以通过度量或计算列(在 Tabel_A 中)来完成

    测量

    ID_CAT = 
    var thisID = MAX('Table_A'[ID])
    
    return  
    CALCULATE(
        MAX('Table_B'[CAT]),
        'Table_B'[ID_MIN] <= thisID,
        'Table_B'[ID_MAX] >= thisID
    )
    

    然后在可视表中,添加来自“Table_A”的 [ID],然后添加此度量。

    或者您可以像这样在 Table_A 中创建一个计算列:

    CAT_COLUMN = 
    var thisID = [ID]
    var temptab = 
    FILTER(
        'Table_B',
        'Table_B'[ID_MIN] <= thisID &&
        'Table_B'[ID_MAX] >= thisID
    )
    
    return
    CALCULATE(
        MAX('Table_B'[CAT]);
        temptab
    )
    

    【讨论】:

      【解决方案2】:

      我找到了一种方法来做到这一点。我在表 A 中创建了一个列,并在表 B 中创建了 S_ID(唯一)列。 Filtreleme 列;

      filtreleme = MAXX(FILTER('Table (4)', EARLIER('Table'[ID])>='Table (4)'[Min_id] && EARLIER('Table'[ID])

      然后我使用 filtreleme 和 S_ID 创建了表 A 和表 B 之间的关系。然后就解决了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-16
        相关资源
        最近更新 更多