我有两个表Product
和Sales
。两个表之间的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
是实现这种情况的唯一方法吗?)
答案 0 :(得分: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 :(得分:1)
这是另一种方法。
不需要计算表。使用ProductID在“产品”和“销售”之间创建关系,并定义一种度量以在有效期内汇总“销售”。
Product Sales =
SUMX(
'Product',
CALCULATE(
[Total Sales],
Sales[SalesValidFromDate] <= 'Product'[TransactionDate]
&& Sales[SalesValidToDate] >= 'Product'[TransactionDate]
)
)