SSAS: именованные запросы - PullRequest
1 голос
/ 07 июля 2010

Сначала я должен признать, что я новичок в службах Analysis Services, но теперь должен расширить существующий сложный куб новым измерением. Так что даже трудно сказать, где моя проблема, не говоря, что у меня даже нет плана, как начать. Хорошо, я постараюсь рассказать, чего я хочу достичь.

Дано представление источника данных с именованным вычислением 'Возвращает'. Его выражение:

CASE WHEN fimaxActionCode IN (1, 2, 3, 4, 5, 8, 9, 12, 14, 17, 18, 20, 21, 22, 23, 24, 25, 30, 31, 32, 35) THEN
 'yes'
ELSE
 'no'
END

fiMaxActionCode - это Foreignkey, и старое правило для «возвратов» заключалось в том, что утверждение (основная группа мер) представляет собой возврат , когда его maxActionCode является одним из вышеуказанных. Новое правило заключается в том, что утверждение является Return , когда его maxActioncode является одним из вышеуказанных, но не имеет предыдущего утверждения с fimaxActionCode IN (8, 10, 11, 13, 19, 23, 24, 26, 27, 28, 29, 30, 33, 34, 36, 37). Предыдущая заявка - это заявка TOP (1) с тем же номером SSN_Number и значением Repair_Completion_date <эта заявка. Теперь мой вопрос (надеюсь, что кто-нибудь понял, что я имею в виду): Как создать это новое измерение? Моей первой идеей было создать новый именованный запрос 'PreviousClaim': </p>

  SELECT     TOP (1) claim.iddata as ClaimID,PreviousClaim.idData as prevClaimID, PreviousClaim.fimaxActionCode, Claim.Repair_Completion_Date as ClaimRepDate, PreviousClaim.Repair_Completion_Date as PrevClaimRepDate
FROM         tabData AS PreviousClaim LEFT OUTER JOIN
                      tabData AS Claim ON PreviousClaim.idData <> Claim.idData
WHERE     (PreviousClaim.fimaxActionCode IN (8, 10, 11, 13, 19, 23, 24, 26, 27, 28, 29, 30, 33, 34, 36, 37)) AND (PreviousClaim.fiClaimStatus IN (1, 4, 254, 255, 6)) 
                      AND (PreviousClaim.SSN_Number = Claim.SSN_Number) AND (PreviousClaim.Repair_Completion_Date < Claim.Repair_Completion_Date)
ORDER BY PreviousClaim.Repair_Completion_Date DESC;

Затем я хотел создать новый Именованный расчет в представлении «Таблица требований-таблицы-данных», который проверяет, есть ли у него «ранее нерегулярное утверждение». Это путь или я на совершенно неверном пути ??

РЕДАКТИРОВАТЬ: еще один вопрос: как бы я запросить этот именованный запрос? Могу ли я определить переменные параметров, например: 10: 10

AND (Claim.iddata=@ClaimID)

С уважением, Тим

1 Ответ

1 голос
/ 07 июля 2010

Как эти данные загружаются в фактическое измерение Claim (или как оно там может быть)?Причина, по которой я спрашиваю, состоит в том, что эту задачу лучше решить, добавив это правило во время процесса загрузки, а не записывая вычисляемый элемент MDX.

Поскольку вам нужно было бы вернуться к данным, чтобы определить, было ли у устройства предыдущее требование с fimaxActionCode, что может привести к неприятностям с MDX, вы можете легко разделить их во время загрузки и разделить ихсоответственно (т. е. если он имел предыдущую претензию ИЛИ не имел предыдущей претензии и относится к одному из перечисленных кодов: 8, 10, 11, 13, 19, 23, 24, 26, 27, 28, 29, 30, 33, 34, 36, 37).По сути, вы будете создавать медленно меняющееся измерение некоторых видов, поскольку я, вероятно, предполагаю, что эти утверждения также имеют какое-то временное отношение, когда это утверждение произошло, если оно произошло, и т. Д. И т. Д.

Решая проблемучерез способ, который я предложил, вы можете использовать то же измерение и просто добавить дополнительные поля, которые будут обозначать, является ли элемент заявкой или нет, и если он не попадает в «новые» критерии возврата, вы просто оставляете запись в покое.

Имеет смысл?

...