Заполните параметр отчета SSRS (скрытый) с помощью sproc или пользовательской функции - PullRequest
1 голос
/ 05 апреля 2010

Мой отчет SSRS извлекает данные из моего хранилища данных.

Приложение ASP.NET, которое у меня есть, подключено к базе данных OLTP.

Я вызываю отчет SSRS из своего приложения ASP.NET и в качестве отчета указываю параметр CustomerID (это ключ приложения в хранилище данных).

Поскольку мой отчет подключен к моему хранилищу данных, я не запрашиваю свой отчет, основанный на данных CustomerID OLTP. Вместо этого я использую суррогатный ключ моего хранилища данных (CustomerDimKey). Теперь в моем отчете мне нужно найти правильный суррогатный ключ для параметра CustomerID, который я передал из своего приложения ASP.NET!

В моем отчете уже есть параметр @CustomerDimKey (он используется во всех отчетах). Мы использовали его для тестирования, но теперь мы будем это скрывать, поскольку интегрировали его с приложением ASP.NET.

Я уже добавил новый параметр в отчет как @CustomerID (он будет иметь идентификатор клиента OLTP), который теперь будет получать значение из ASP.NET.

Мне нужно знать способ повторного использования параметра отчета @CustomerDimKey, который теперь должен получать значение из оператора sql или sproc после запроса отчета. На основе значения, содержащегося в параметре @CustomerID.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2010

Звучит довольно просто. Предполагая, что у вас есть SQL или сохраненный процесс, который может искать CustomerDimKey, просто добавьте набор данных, который делает это, используя параметр @CustomerID, а затем выберите этот CustomerDimKey. Давайте предположим, что это сохраненный процесс с именем LookUpCustomerDimKey, который принимает @CustomerID и выходной параметр @CustomerDimKey. Я бы создал набор данных отчета примерно так:

declare @CustomerDimKey bigint

exec LookUpCustomerDimKey @CustomerID, @CustomerDimKey out

select @CustomerDimKey CustomerDimKey

Затем установите внутренний параметр отчета CustomerDimKey и получите его значение по умолчанию из только что созданного запроса. Теперь отчет будет ожидать предоставления CustomerID, а затем рассчитать CustomerDimKey, прежде чем использовать его в других наборах данных отчета.

Конечно, это не обязательно должен быть сохраненный процесс. Вам просто нужно убедиться, что тело набора данных генерирует набор результатов из одной строки, содержащий ключ. Это может быть простой выбор SQL или серия операторов TSQL или хранимые вызовы процедур. Практически все, что вы можете поместить в хранимый процесс, может попасть в тело набора данных. Просто нужно в конечном итоге произвести ряд.

0 голосов
/ 28 апреля 2010

Убедитесь, что вы сохраняете правильный порядок параметров во время проектирования.

@CustomerID -- First parameter

@CustomerDimKey -- Second parameter and depends on @CustomerID for its value.

Убедитесь, что новый набор данных возвращает набор результатов с одной записью (значением)

declare @CustomerDimKey bigint

SELECT @CustomerDimKey = CustomerDimKey FROM Datawarehouse.CustomersDimension WHERE CustomerID = @CustomerID

select @CustomerDimKey AS CustomerDimKey

...