У меня есть отношение атрибута родитель-потомок в измерении служб Analysis Services, скажем, [Dim].[Child]
является дочерним элементом [Dim].[Parent]
, и у меня есть запрос, который возвращает набор
UNION(
[Dim].[Parent].Members * [Dim].[Child].Members,
[Dim].[Parent].[ALL] * [Dim].[Child].Members
)
на оси 1 и некоторые выходные данные на оси 0. Запрос отлично работает при запуске в Management Studio.
Теперь я пытаюсь создать диаграмму в службах Reporting Services с [Dim].[Child]
на оси x и Aggregate(some_output)
на оси Y. Я ожидаю увидеть дочерние элементы на оси х с выходными данными, агрегированными для всех родителей (в данном случае это только один), т.е. данные взяты из строки { [Dim].[Parent].[ALL], [Dim].[Child].&[TheChildID] }
. Как указано выше, запрос действительно возвращает эту строку с правильными данными.
Однако функция Aggregate
в этом случае возвращает NULL. Такое поведение всегда присутствует при использовании атрибутов parent-child и размещении дочернего элемента на оси X. То же самое происходит при помещении дочернего элемента в строку таблицы и добавлении агрегированного вывода в столбец. Кажется, что сервер отчетов знает, что агрегация будет происходить только для одного участника, и отказывается это делать.
Если я сделаю еще один идентичный запрос, просто добавьте атрибуты, которые имеют разные отношения, например, [Time].[Month]
и [Time].[DayOfMonth]
, агрегация работает нормально, поскольку в этот раз один и тот же день может принадлежать многим месяцам, и данные должны быть агрегированы.
Теперь я понятия не имею, почему это происходит - действительно ли сервер отчетов запрашивает источник данных OLAP для выяснения взаимосвязи или как? Или в запросе есть какая-то магия, которая возвращает ВСЕ строки, о которых я не знаю? Единственной корреляцией для случаев, которые работают, а какие нет, кажется, отношения.
РЕДАКТИРОВАТЬ: некоторые наблюдения после дополнительной игры: отчет работает, если я удаляю строку [Parent].Members * [Child].Members
из запроса, заставляя его извлекать только [Parent].ALL * [Child].&[ID]
строк. Теперь на диаграмме собраны данные, но, очевидно, у меня больше нет отдельных членов.