Я пытаюсь преобразовать кусок SQL в dax.
Сюда входят только две таблицы: факты и атрибут общего измерения Encounter.
Я хочу суммировать все сборы по встречам и сборы по встречам, отфильтрованные только по коллекциям TransactionRollup_Name = Contractual, TransactionTypeDescription = Adjustment, опубликованным в прошлом месяце.
Я отфильтрую систему и действие <> Удалить в клиенте отчетов (powerbi или excel)
Как только они будут получены, я хочу получить сумму сборов по контракту, где доля сборов по контракту в общей сумме сборов за столкновения составляет> = .9 и <1 </p>
SQL:
DECLARE @startdate INT = 20181201
, @thrudate INT = 20181231
, @systemcode VARCHAR(1) = '1';
SELECT SUM(coll.Contractual)
FROM ( SELECT SUM(Amount) * -1 Contractual
, col.EncounterID
FROM
dwo.FactCollections col
JOIN dwo.DimTransactionCode_mds mds ON col.mds_TransactionID = mds.SK_TransactionKey
WHERE
mds.TransactionRollup_Name = 'Contractual'
AND mds.TransactionTypeDescription = 'Adjustment'
AND col.SystemID = TRY_CONVERT(INT, @systemcode)
AND col.Action <> 'Delete'
AND col.PostDateTime >= @startdate
AND col.PostDateTime <= @thrudate
GROUP BY col.EncounterID ) coll
JOIN ( SELECT EncounterID
, SUM(Amount) Charge
FROM dwo.FactCharges ldg
WHERE
ldg.SystemID = TRY_CONVERT(INT, @systemcode)
AND ldg.Action <> 'Delete'
GROUP BY ldg.EncounterID ) chg ON chg.EncounterID = coll.EncounterID
WHERE
chg.Charge <> 0
AND chg.Charge IS NOT NULL
AND coll.Contractual / chg.Charge >= .90
AND coll.Contractual / chg.Charge < 1.0;
Попытка измерения Dax:
90%-99.99% of Charges :=
CALCULATE (
'MeasureTable'[Sum of Contractual Adjustments],
FILTER (
'FactCollections',
DIVIDE (
'MeasureTable'[Sum of Contractual Adjustments],
'MeasureTable'[ChargeTotal]
)
>= .90
&& DIVIDE (
'MeasureTable'[Sum of Contractual Adjustments],
'MeasureTable'[ChargeTotal]
)
< 1.0
)
)
Charge := SUM ( 'FactCharges'[Amount] )
Sum of Contractual Adjustments :=
CALCULATE (
SUM ( FactCollections[Amount] ) * ( -1 ),
FILTER (
'Transaction Code',
'Transaction Code'[TransactionTypeDescription] = "Adjustment"
&& 'Transaction Code'[TransactionRollup_Name] = "Contractual"
)
)
Пример данных по одному столкновению за запрос.
Добавление
Пройдя другой путь с даксом, я получу 1/2 пути.
Запрос суммированных столбцов дает мне набор результатов, который объединяет сборы и сборы по договорам до встречи и вычисляет соотношение контрактов / сборов.
Конечный результат должен будет фильтровать этот промежуточный набор результатов, где
- договорное соотношение / плата составляет> = 0,9 и <1 </li>
- даты публикации для договорных коллекций должны быть отфильтрованы по отчетному контексту фильтра клиента
- Должны быть включены все даты публикации для начислений, независимо от контекста фильтра даты публикации в клиенте отчетов
Я понятия не имею, как сделать эту вторую часть в Dax.
> EVALUATE SUMMARIZECOLUMNS (
> 'Encounter'[Encounter],
> "ChargeAmount", SUMX ( 'FactCharges', 'FactCharges'[Sum Charge Amount] ),
> "ContractualAmount", SUMX (
> 'FactCollections',
> CALCULATE (
> 'FactCollections'[Sum of Adjustments],
> 'Transaction Code'[TransactionRollup_Name] = "Contractual"
> )
> ),
> "Contractual : Charge", DIVIDE (
> SUMX (
> 'FactCollections',
> CALCULATE (
> 'FactCollections'[Sum of Adjustments] * -1,
> 'Transaction Code'[TransactionRollup_Name] = "Contractual"
> )
> ),
> SUMX ( 'FactCharges', 'FactCharges'[Sum Charge Amount] )
> ) )