我有一个表CarHistoryFact(CarHistoryFactId,CarId,CarHistoryFactTime,CarHistoryFactConditions)跟踪汽车的历史状态。 CarHistoryFactConditions是一个25位(二进制)int列,它编码汽车在给定时间点可能处于25种不同条件的状态。
我有一个维度表CarConditions,每个条件都有一行,它们的基数为10位。
如何在事实和维度之间实现“关系”,列出给定汽车的所有条件
我可以提出一些解析代码,但我不知道如何将它连接到维度表以获得当前适用的条件。
可以在这里看到dax中的位掩码解析:
您可以创建一个CROSSJOIN表,其中所有记录都添加了25次,然后过滤掉一次不存在的记录
CarHistoryConditions =
var temp = CROSSJOIN(CarHistoryFact ; CarConditions )
return FILTER(temp; MOD(TRUNC(CarHistoryFact [CarHistoryFactConditions] / CarConditions [bit]):2) = 1)
注意:我假设CarHistoryFactConditions和bit是一个整数,而不是一串位。当然你可以改变它。
reult是一张桌子,每辆车都有多排条件。例如。汽车一有两个条件,汽车二有五个条件。你得到7行