В отношении даты, у меня есть 4 дня (21,22,27,28) как день .. У меня есть измерение времени, которое имеет час. Я выбрал только 7 из часа во времени. Доступная мера - Max Price. Для параметра [Time dimension.Hour]. [7] только 2 дня i.e 21 и 28 имеют значения и значение null для 22 и 27. Теперь я хочу получить результаты дна 2 на основе даты фильтрации (по максимальной цене). Ниже приведен запрос mdx:Mdx не удаляет элементы иерархии на основе существующих фильтров
WITH
SET [XL_Col_Dim_0] AS
VisualTotals
(
(DISTINCT
Hierarchize
(
{
Ascendants([Time dimensions.Hour].[7])
,Descendants([Time dimensions.Hour].[7])
}
))
)
SET [XL_Row_Dim_0] AS
VisualTotals
(
(DISTINCT
Hierarchize
(
{
{
DrillDownLevelBottom
(
{[Date dimensions.Day].[All Date dimensions.Days]}
,2,
,[Measures].[Max Price]
)
}
}
))
)
SELECT
NON EMPTY
Hierarchize
(
Intersect
(
AddCalculatedMembers
(
{
DrillDownLevel({[Time dimensions.Hour].[All Time dimensions.Hours]})
}
)
,[XL_Col_Dim_0]
)
)
DIMENSION PROPERTIES
PARENT_UNIQUE_NAME
,HIERARCHY_UNIQUE_NAME
ON COLUMNS
,NON EMPTY
Hierarchize
(
Intersect
(
AddCalculatedMembers
(
{
DrillDownLevel({[Date dimensions.Day].[All Date dimensions.Days]})
}
)
,[XL_Row_Dim_0]
)
)
DIMENSION PROPERTIES
PARENT_UNIQUE_NAME
,HIERARCHY_UNIQUE_NAME
ON ROWS
FROM [mycube]
WHERE
[Measures].[Max Price]
CELL PROPERTIES
VALUE
,FORMAT_STRING
,LANGUAGE
,BACK_COLOR
,FORE_COLOR
,FONT_FLAGS;
Проблема в том, что он вернет 27 и 28, хотя [Час]. [7] не имеет значения для даты 27. Вместо этого даты, которые должны быть возвращены, являются 21 и 28.
EDIT Когда я заменяю [Date dimension.Day]. [Все размеры Date.Days] с [Date dimensions.Day] . [21], [Date dimensions.Day]. [28] которые являются доступными датами, когда [Час]. [7] уже используется как slicer, кажется, что все работает нормально, но если я делаю дно 1 вместо 2, он все равно возвращает 2 результата для измерения дня, что неверно, оно должно возвращаться только 1. Кажется, что-то DrillDownLevelBottom работает не так, как ожидалось ,
Почему вы не используете 'BottomCount' функцию, если вы хотите, чтобы нижние два из списка, основанные на измерении? – whytheq
@whytheq DrillDownLevelBottom используется для получения нижней части большинства элементов набора. На самом деле запрос генерируется excel. Я пытаюсь подключить excel с mondrian. –
Без сомнения, это самый сложный код MDX, с которым я когда-либо сталкивался (мое личное мнение, поскольку я редко использовал эти функции и не видел, чтобы кто-то использовал большинство из них). Вопрос: Если этот код генерируется excel, я предполагаю, что вы не ищете другой запрос. Как мы можем вам помочь? – SouravA