DAX: Как добиться эффекта соединения / отношения между столбцом битовой маски и таблицей значений битов? - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть таблица CarHistoryFact (CarHistoryFactId, CarId, CarHistoryFactTime, CarHistoryFactConditions), которая отслеживает исторический статус автомобилей. CarHistoryFactConditions - это 25-битный (в двоичном виде) столбец int, который кодирует состояние 25 различных условий, в которых автомобиль может находиться в данный момент времени.

У меня есть таблица измерений CarConditions со строкой для каждого из условий и их базовым 10-битным значением.

Как я могу реализовать «взаимосвязь» между фактом и измерением, предоставив список всех условий для данного автомобиля:

Я могу придумать код разбора битов, но я не уверен, как подключить его к таблице измерений, чтобы получить только текущие применимые условия во время вагона.

Синтаксический анализ битовой маски в dax можно увидеть здесь:

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

1 Ответ

1 голос
/ 27 апреля 2019

Вы можете создать таблицу CROSSJOIN, в которой все записи добавляются 25 раз, а затем отфильтровать некогда несуществующее

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

примечание: я предположил, что CarHistoryFactConditions и бит являются целым числом, а не строкойбиты.Конечно, вы можете изменить это.

Результатом является таблица с таким количеством строк условий для каждого автомобиля.Например, у Car one 2 условия, а у Car 5 5 условий.Вы получаете 7 строк

...