Excel CUBEVALUE & CUBESET количество записей больше, чем число - PullRequest
1 голос
/ 24 сентября 2019

Я пишу серию запросов в модель данных моей рабочей книги, чтобы получить количество документов на Category_Name, превышающее определенное количество дней (например, >=650).

В настоящее время этоформула (введенная в ячейку C3) возвращает правильный номер для отдельного значения Days Old (=3).

=CUBEVALUE("ThisWorkbookDataModel",
            "[Measures].[Count of Docs]",
            "[EDD_Report].[Category_Name].&["&$B2&"]",
            "[EDD_Report_10-01-18].[Days Old].[34]")

Как вернуть количество документов для значений Days Old >=650?

Рабочий лист выглядит следующим образом:

     A            B             C
 1  Date        PL        Count of Docs
 2  10/1/2018   ALD             3
 3  ...

ОБНОВЛЕНИЕ: Как указано в ответе @ama ниже, выражение на шаге B не сработало.

Однако я создал подмножество значений Days Old, используя

 =CUBESET("ThisWorkbookDataModel",
          "{[EDD_Report_10-01-18].[Days Old].[all].[650]:[EDD_Report_10-01-18].[Days Old].[All].[3647]}")

Ячейка, содержащая этот набор кубов, называется третьей Member_expression исходной формулы CUBEVALUE.Теперь ограничение заключается в том, что значения начала и конца должны быть членами набора Days Old.

Это ограничение, так как я надеялся на более общий тест для >=650, и нет способа гарантировать, что в запросе будут указаны конкретные значения Days Old.

1 Ответ

1 голос
/ 24 сентября 2019

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

Язык MDX должен позволять вам предоставлять диапазоны значений в виде {[Table].[Field].[All].[LowerBound]:[Table].[Field].[All].[UpperBound]}.

A.Получить общее количество записей:

D3 =CUBEVALUE("ThisWorkbookDataModel",
           "[Measures].[Count of Docs]",
           "[EDD_Report].[Category_Name].&["&$B2&"]"),
           "{[EDD_Report_10-01-18].[Days Old].[All]")

B.Получите количество записей меньше 650:

E3 =CUBEVALUE("ThisWorkbookDataModel",
           "[Measures].[Count of Docs]",
           "[EDD_Report].[Category_Name].&["&$B2&"]"),
           "{[EDD_Report_10-01-18].[Days Old].[All].[0]:[EDD_Report_10-01-18].[Days Old].[All].[649]}")

Примечание. Я нашел кое-что об использовании .[All].[650].lag(1)}, но думаю, что для его правильной работы ваши данные могут быть отсортированы?

C.Substract

C3 =D3-E3

В качестве альтернативы, попробуйте быстро и грязно:

=CUBEVALUE("ThisWorkbookDataModel",
           "[Measures].[Count of Docs]",
           "[EDD_Report].[Category_Name].&["&$B2&"]"),
           "{[EDD_Report_10-01-18].[Days Old].[All].[650]:[EDD_Report_10-01-18].[Days Old].[All].[99999]}")

Надеюсь, это поможет, и дайте мне знать, мне все еще любопытно!

...