具有多个条件的复杂关系

问题描述 投票:0回答:2

我有两个表ProductSales。两个表之间的relationship都类似下面的内容(在Sql中)

Select *from Product P
Inner Join Sales S
On S.SalesProductID = P.ProductID
and P.TransactionDate Between S.SalesValidFromDate and S.ValidToDate

虽然Modelling表格中的Power BI/SSAS表,但我们如何指定这些表之间的上述关系。我在提供的“关系”选项中找不到任何写条件/表达式的选项。任何建议,不胜感激。 (我遇到过calculated tables是实现这种情况的唯一方法吗?)

powerbi powerbi-desktop ssas-tabular
2个回答
1
投票

如评论中所述,您将无法在Power BI模型窗格中定义该关系。您可以通过以下方式创建一个计算表:

join_table =
FILTER (
    CROSSJOIN ( 'Product'; Sales );
    'Product'[Prod_ID_p] = Sales[Prod_Id] 
        && 'Product'[Trans_Date] >= Sales[Sales_Valid_From]
        && 'Product'[Trans_Date] < Sales[Sales_Valid_To]
)

[CROSSJOIN将抱怨两个表中是否有相同名称的列,为什么将其重命名为Prod_ID_p


1
投票

这里是替代方法。

不需要计算表。使用ProductID在产品和销售之间创建关系,并定义一种度量以在有效期内汇总销售。

Product Sales =
SUMX(
    'Product',
    CALCULATE(
        [Total Sales],
        Sales[SalesValidFromDate] <= 'Product'[TransactionDate]
          && Sales[SalesValidToDate] >= 'Product'[TransactionDate]
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.