Формула DAX для SQL с коррелированным подзапросом - PullRequest
0 голосов
/ 27 марта 2019

Я хочу создать отчет SSRS, который показывает баланс для активных (вроде) банковских счетов.

База данных для этого - две таблицы. Таблица измерений содержит информацию о счете, такую ​​как номер счета, имя и т. Д. Во второй таблице перечислены все транзакции этих счетов (таблица фактов). Например, сколько денег было потрачено, баланс после завершения транзакции, дата и время ее совершения и т. Д. Вот две таблицы с примерами данных:

enter image description here

В отчете должен быть один параметр даты для фильтрации данных. Цель состоит в том, чтобы я мог выбрать дату, и в отчете отображаются все открытые счета и их баланс на данный момент. Если я выбрал 20.01.2019 в качестве даты параметра, в отчете должна быть показана эта таблица с примерами.

enter image description here

Если я выберу 27.03.2019 в качестве даты параметра, то это должен быть результат (Счет 4 закрыт, потому что последняя транзакция была $ 0. В этом примере это означает, что счет закрыт.):

enter image description here

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

SELECT c1.AccountID,
(SELECT TOP 1 t1.balance FROM Transactions AS t1 WHERE c1.AccountID = t1.AccountID AND t1.date <= @Var AND t1.balance IS NOT NULL ORDER BY t1.AccountID, t1.UseCount) AS Balance,
FROM Card AS c1
WHERE (SELECT TOP 1 t1.balance FROM Transactions AS t1 WHERE c1.AccountID = t1.AccountID AND t1.date <= @Var AND t1.balance IS NOT NULL ORDER BY t1.AccountID, t1.UseCount) <> 0

Проблема в том, что мне это нужно в DAX, поскольку мы используем табличную базу данных SSAS. Но я не знаю, как структурировать свой DAX-запрос, чтобы получить правильный набор данных. Я перепробовал много разных подходов, но ни один из них не приблизился к рабочему решению. То, что я пробовал (NATURALINNERJOIN с переменными, SUMMARIZECOLUMNS с FILTER и т. Д.) Всегда имело недостатки, которые делали его бесполезным.

Буду благодарен за предложения о том, как передать этот SQL-запрос в DAX.

...