我有两个表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
是实现这种情况的唯一方法吗?)
如评论中所述,您将无法在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
。
这里是替代方法。
不需要计算表。使用ProductID在产品和销售之间创建关系,并定义一种度量以在有效期内汇总销售。
Product Sales =
SUMX(
'Product',
CALCULATE(
[Total Sales],
Sales[SalesValidFromDate] <= 'Product'[TransactionDate]
&& Sales[SalesValidToDate] >= 'Product'[TransactionDate]
)
)