SSRS: добавление матрицы на основе 2 наборов данных - PullRequest
0 голосов
/ 07 июля 2011

Я только начал работать с SSRS и выяснил, как подключить мой запрос MDX к кубу и подключить его к матрице

Однако мне нужно иметь матрицу, и в каждом разделе мне нужно вызывать разные DataSet.

Например:

Matrix1 будет иметь повторяющуюся секцию на основе DataSetA (скажем, его центры обслуживания клиентов).

в каждом разделе (клиентском центре) Matrix1 у меня будет выражение, которое вызывает Набор данных , используя значение из DataSetA в качестве параметра (допустим, это будет отдельный запрос MDX, получающий некоторую другую информацию на основе идентификатора центра обслуживания клиентов).

так что мое выражение внутри ячейки табликса выглядит примерно так:

=First(Fields!MTD_Trades.Value, "DatasetB")

возможно ли передать фильтр запроса MDX (или предложение where), используя параметр из этой точки?

в идеале это было бы что-то вроде этого (псевдокод):

=First(Fields!MTD_Trades.Value, "DatasetB") WHERE Fields!Where_Filter.Value

что-то в этом духе ... где раздел MDX WHERE является динамическим на основе другого запроса

ОБНОВЛЕНИЕ - объяснение решения

вот пример того, что я делаю: скажем, приложение основано на воздушном сообщении, а бизнес-пользователь здесь - какой-то сотрудник авиационного управления. Я дам этому человеку пользовательский интерфейс, который позволит ему определять фрагменты, которые он хочет видеть. Например, они могут войти и создать n фрагментов (то есть международные рейсы, рейсы, вылетающие из США, рейсы, прибывающие после полуночи, рейсы с более чем 50 пассажирами ... n). Как вы можете видеть, у них будет свобода добавления любых фильтров, которые они пожелают, к каждому срезу.

Затем, основываясь на их действиях (используя GUI), я сгенерирую необходимые MDX-запросы (по одному для каждого среза).

Моя задача здесь состоит в том, чтобы создать отчет SSRS, в котором будет показана отдельная строка для каждого из этих срезов (1-n). Надеюсь, это поможет понять мою загадку. Первая часть запроса будет одинаковой для каждого среза (количество полетов), но раздел WHERE будет различным и динамичным для отчета.

1 Ответ

1 голос
/ 07 июля 2011

Вы можете использовать функцию lookup() для доступа к данным в другом наборе данных из элемента отчета, но вы не можете выполнить несколько вложенных запросов в отчете. Это можно сделать только в пределах параметров, где один параметр может быть входом для другого параметра, управляемого запросами.

Лучший способ действий - изменить исходный запрос, чтобы он содержал все данные, необходимые для матрицы.

РЕДАКТИРОВАТЬ: похоже, вам нужно использовать многозначный параметр.

  1. В параметре «Ломтики» установите значение allow multiple values
  2. В наборе данных, который принимает этот параметр, перейдите в форму параметров и установите значение в выражение, которое равно =Join(Parameters!Slices.Value,",").
  3. Раздвиньте строку в вашем запросе и запустите каждый подзапрос, а затем вернитесь как набор.
...