MDX SSAS OLAP - переключение атрибутов на основе выбора размера - PullRequest
0 голосов
/ 02 октября 2019

У меня есть таблица фактов (детализация документа) с 3 показателями суммы и другими мерами qtys, эти 3 показателя суммы не в одной валюте, а связаны с типом визуализации.

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

Если вы просматриваете просмотр документа, вы должны просматривать все виды валют, в зависимости от документа (GBP, EUR, CAN, USA, AUD и т. д.).

Если вы просматриваете представление компании, вы должны увидеть это в отношении валюты, связанной с компанией (т. Е. Компания 1 - это евро, Компания 2 - это доллар США и т. Д.).

Группа компаний - это всегда евро.

Пример:

таблица фактов

╔═══════════════════════════════════════════════════════════════════════════╗
║                               Fact Document                               ║
╠════════════╦═════════════╦══════════════╦═════════════╦═══════════════════╣
║ Company ID ║   Doc ID    ║ Mtr Document ║ Mtr Company ║ Mtr Company Group ║
╠════════════╬═════════════╬══════════════╬═════════════╬═══════════════════╣
║ 1          ║ 101         ║          100 ║          90 ║                95 ║
╠════════════╬═════════════╬══════════════╬═════════════╬═══════════════════╣
║ 2          ║ 102         ║          250 ║         150 ║               120 ║
╠════════════╬═════════════╬══════════════╬═════════════╬═══════════════════╣
║ 3          ║ 103         ║          400 ║         200 ║               170 ║
╚════════════╩═════════════╩══════════════╩═════════════╩═══════════════════╝

затемненный документ

╔════════════════════════════════════════════════════════════════════════╗
║                              Dim Document                              ║
╠════════╦═══════════════════╦══════════════════╦════════════════════════╣
║ Doc ID ║ Document Currency ║ Company Currency ║ Company Group Currency ║
╠════════╬═══════════════════╬══════════════════╬════════════════════════╣
║ 101    ║               USD ║              GBP ║                    EUR ║
╠════════╬═══════════════════╬══════════════════╬════════════════════════╣
║ 102    ║               CAN ║              USD ║                    EUR ║
╠════════╬═══════════════════╬══════════════════╬════════════════════════╣
║ 103    ║               AUD ║              USD ║                    EUR ║
╚════════╩═══════════════════╩══════════════════╩════════════════════════╝

затемненный тип визуализации (ручное и статическое измерение без изменений)

╔═══════════════════════╦═════════════════════════╗
║ Visualization type ID ║ Visualization type Name ║
╠═══════════════════════╬═════════════════════════╣
║                     1 ║ Document view           ║
║                     2 ║ Company view            ║
║                     3 ║ Company Group view      ║
╚═══════════════════════╩═════════════════════════╝

тусклая валюта

╔══════════╗
║ Currency ║
╠══════════╣
║ EUR      ║
║ USD      ║
║ GBP      ║
║ CAN      ║
╚══════════╝

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

Но я также хочу динамически выбирать валюту, связанную с этим показателем. Поэтому я хочу связать одно измерение с другим, чтобы у меня был только атрибут валюты, и я не хочу иметь 3 разных атрибута валюты.

Желаемый вывод:

Выбран вид документа

╔═════════╦════════╦══════════╗
║ Doc Id  ║ Amount ║ Currency ║
╠═════════╬════════╬══════════╣
║     101 ║    100 ║ USD      ║
║     102 ║    250 ║ CAN      ║
║     103 ║    450 ║ AUD      ║
╚═════════╩════════╩══════════╝

Выбран вид компании

╔═════════╦════════╦══════════╗
║ Doc Id  ║ Amount ║ Currency ║
╠═════════╬════════╬══════════╣
║     101 ║     90 ║ GPB      ║
║     102 ║    150 ║ USD      ║
║     103 ║    200 ║ USD      ║
╚═════════╩════════╩══════════╝

Выбран вид группы компаний

╔═════════╦════════╦══════════╗
║ Doc Id  ║ Amount ║ Currency ║
╠═════════╬════════╬══════════╣
║     101 ║     95 ║ EUR      ║
║     102 ║    120 ║ EUR      ║
║     103 ║    170 ║ EUR      ║
╚═════════╩════════╩══════════╝

Возможно ли это сделать?

Всего наилучшего и спасибо!

Рикардо Кастро

ОБНОВЛЕНИЕ

Я сделал это ниже, и я получаю значения1, 2 или 3, когда я выбираю тип в «тусклый тип визуализации»

CREATE MEMBER [Coin]
 AS CASE WHEN [visualization type].[visualization type].CurrentMember.MEMBERVALUE = 'Document view'
    THEN 1
    ELSE (CASE WHEN [visualization type].[visualization type].CurrentMember.MEMBERVALUE = 'Company view'
        THEN 2
        ELSE 3 END) END,
VISIBLE = 1  ;

Мне нужно получить значения атрибута. Я попробовал:

[Document].[Document Currency].firstchild

STRTOMEMBER("[Document].[Document Currency].MEMBERS")

STRTOMEMBER('[Document].[Document Currency].[Document Currency].FirstChild', CONSTRAINED)

Если я добавлю следующий код, я получу «все», единственное, что мне не нужно: P:

[Document].[Document Currency].CurrentMember.Properties("Name")

Есть мысли?

1 Ответ

0 голосов
/ 02 октября 2019

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

https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/mdx/managing-scope-and-context-mdx

...