Агрегат служб отчетов не работает для отношений между родителями и детьми - PullRequest
0 голосов
/ 22 мая 2009

У меня есть отношение атрибута родитель-потомок в измерении служб 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] строк. Теперь на диаграмме собраны данные, но, очевидно, у меня больше нет отдельных членов.

1 Ответ

0 голосов
/ 26 мая 2009

Просто пара наблюдений, которые, я надеюсь, помогут.

  1. Для статистической функции в службах отчетов требуется параметр "область действия" ... например, Aggregate (Fields! Child.value, "ParentGroup")
  2. Ваш поставщик данных должен поддерживать эту функцию. Если этого не произойдет, то ничего не возвращается. Смотрите ссылку ниже ...

Для получения дополнительной справки / проверки информации Совокупность документации по функциям.

...