MDX / Cubemember / Excel - PullRequest
       16

MDX / Cubemember / Excel

1 голос
/ 20 марта 2019

Надеюсь, кто-то может помочь, я довольно новичок в MDX и пытаюсь создать шаблон Excel, который будет обновляться автоматически.

У меня есть базовая настройка куба, и я создал сводную таблицу и изменил ее, чтобы отобразить формулы. Затем я обновил формулы из A1 и т. Д. До имени элемента, чтобы их можно было перемещать на другую вкладку в первенствует.

The below shows my excel values

A2 =CUBEMEMBER("cubeconnection","[Data Date].[Working Day In Quarter].&[64]")

B2 =CUBEMEMBER("cubeconnection",{"[Data Date].[Working Day In Quarter].&[64]","[Data Date].[Data Date].&[2018-12-31T00:00:00]"})

C2 =CUBEVALUE("cubeconnection","[Data Date].[Quarter Offset].&[1]","[Data Date].[Working Day In Quarter].&[64]","[Measures].[Closing Base]")

Я хочу иметь возможность настроить B2 на динамический характер и не включать в себя ссылку "[Data Date].[Data Date].&[2018-12-31T00:00:00]", но все равно отображать дату, так как при выполнении отчета следующего квартала дата будет не 2018-12-31, а новой датой.

Есть ли способ сослаться на мое поле рабочего дня и вернуть члена данных?

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Я думаю, что вы можете попробовать EXISTS со ссылкой на ячейку A2 вместо жесткого кодирования в B2.

EXISTS пример здесь: https://docs.microsoft.com/en-us/sql/mdx/exists-mdx?view=sql-server-2017

SELECT [Measures].[Internet Sales Amount] ON 0,  
EXISTS(  
[Customer].[Customer].[Customer].MEMBERS  
, {[Customer].[State-Province].&[CA]&[US]}  
) ON 1   
FROM [Adventure Works];

Классная справка по функциям CUBE: https://powerpivotpro.com/2018/12/cube-functions-the-good-the-bad-and-how-to-make-them-great/

Так что для B2 можно попробовать это:

=CUBEMEMBER("cubeconnection","EXISTS( [Data Date].[Data Date].MEMBERS, {" & A2 & "}).ITEM(0).ITEM(0)")
0 голосов
/ 20 марта 2019

Посмотрите на образец ниже. Он использует функции vba для получения последней даты любого кватера

select 

tail({
(
strtomember('[Dim Date].[Year].&['+cstr(datepart("yyyy",Now()))+ ']')
,
strtomember('[Dim Date].[Quarter].&['+cstr(datepart("q",Now()))+ ']')
,[Dim Date].[Date].[Date]
)
}
,1)
on columns
from cube

Результат

enter image description here

Вам нужно изменить часть внутри функции tail и поместить ее в свою ячейку Excel

...