DAX:如何实现位掩码列和位值表之间的连接/关系的效果?

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

我有一个表CarHistoryFact(CarHistoryFactId,CarId,CarHistoryFactTime,CarHistoryFactConditions)跟踪汽车的历史状态。 CarHistoryFactConditions是一个25位(二进制)int列,它编码汽车在给定时间点可能处于25种不同条件的状态。

我有一个维度表CarConditions,每个条件都有一行,它们的基数为10位。

如何在事实和维度之间实现“关系”,列出给定汽车的所有条件

我可以提出一些解析代码,但我不知道如何将它连接到维度表以获得当前适用的条件。

可以在这里看到dax中的位掩码解析:

https://radacad.com/quick-dax-convert-number-to-binary

powerbi dax ssas-tabular
1个回答
1
投票

您可以创建一个CROSSJOIN表,其中所有记录都添加了25次,然后过滤掉一次不存在的记录

CarHistoryConditions = 
var temp = CROSSJOIN(CarHistoryFact ; CarConditions )
return FILTER(temp; MOD(TRUNC(CarHistoryFact [CarHistoryFactConditions] / CarConditions [bit]):2) = 1)

注意:我假设CarHistoryFactConditions和bit是一个整数,而不是一串位。当然你可以改变它。

reult是一张桌子,每辆车都有多排条件。例如。汽车一有两个条件,汽车二有五个条件。你得到7行

© www.soinside.com 2019 - 2024. All rights reserved.