Функции построителя отчетов — функция Multilookup в отчете с разбивкой на страницы (построитель отчетов)
Область применения: Построитель отчетов (SSRS) Power BI конструктор отчетов построитель отчетов в SQL Server Data Tools
Возвращает набор первых подходящих значений для указанного набора имен из набора данных, содержащего пары "имя-значение", в отчете с разбивкой на страницы.
Примечание.
Создать и изменить определение для отчета на страницу (RDL-файл) можно с помощью построителя отчетов (Майкрософт), построителя отчетов Power BI и конструктора отчетов в SQL Server Data Tools.
Синтаксис
Multilookup(source_expression, destination_expression, result_expression, dataset)
Параметры
source_expression
(VariantArray) Выражение, вычисляемое в текущей области и указывающее набор имен или ключей для поиска. Например, для многозначного параметра =Parameters!IDs.value
.
destination_expression
(Variant) Выражение, вычисляемое для каждой строки в наборе данных и указывающее имя или ключ для сопоставления. Например, =Fields!ID.Value
.
result_expression
(Variant) Выражение, которое вычисляется для строки в наборе данных, где source_expression = destination_expression, и указывает возвращаемое значение. Например, =Fields!Name.Value
.
набор данных
Константа, задающая имя набора данных в отчете. Например, «Colors».
Возврат
Возвращает значение VariantArrayили Nothing , если совпадения нет.
Замечания
Функция Multilookup служит для извлечения набора значений из набора данных, содержащего пары "имя-значение" со связью "один к одному". ФункцияMultiLookup является эквивалентом функции Lookup для набора имен или ключей. Например, для параметра с несколькими значениями на основе идентификаторов первичных ключей функция Multilookup может быть использована в выражении в текстовом поле таблицы для извлечения связанных значений из набора данных, не привязанного к параметру или таблице.
ФункцияMultilookup выполняет следующие действия.
вычисляет исходное выражение в текущей области и создает массив объектов типа variant;
для всех объектов массива вызывается функция Lookup (построитель отчетов и службы SSRS), а результаты добавляются к массиву возвращаемых значений;
возвращает набор результатов.
Для извлечения единственного значения для указанного имени из набора данных, состоящего из пар "имя/значение" со связью "один к одному", используйте функцию Lookup (построитель отчетов и службы SSRS). Для извлечения нескольких значений для имени из набора данных, состоящего из пар "имя-значение" со связью "один ко многим", используйте функцию LookupSet (построитель отчетов и службы SSRS).
Применяются следующие ограничения:
ФункцияMultilookup вычисляется после применения всех критериев фильтра.
Поддерживается только один уровень уточняющего запроса. Исходное, целевое и результирующее выражения не могут включать в себя ссылки на функцию уточняющего запроса.
Исходное и результирующее выражения должны возвращать один и тот же тип данных.
Исходное, целевое и результирующее выражения не могут включать в себя ссылки на переменные отчета или группы.
ФункциюMultilookup нельзя использовать в качестве выражения для следующих элементов отчета:
динамические строки соединения для источника данных;
вычисляемые поля в наборе данных;
параметры запроса в наборе данных;
фильтры в наборе данных;
параметры отчета;
Свойство Report.Language.
Дополнительные сведения см. в разделах Справочник по агрегатным функциям (построитель отчетов и SSRS) и Область выражения для суммирования, агрегатных функций и встроенных коллекций (построитель отчетов и SSRS).
Примеры
А. Использование функции MultiLookup
Предположим, набор данных Category содержит поле CategoryList, которое содержит список идентификаторов категорий с разделителями-запятыми, например "2, 4, 2, 1".
Набор данных «CategoryNames» содержит идентификатор и название категории, как показано в следующей таблице.
ИД | Имя. |
---|---|
1 | Аксессуары |
2 | Велосипеды |
3 | Clothing |
4 | Компоненты |
Для поиска имен, соответствующих списку идентификаторов, используйте функцию Multilookup. Сначала необходимо разбить список на массив строк, вызвать функцию Multilookup для извлечения названий категорий и объединить результаты в строку.
Следующее выражение при помещении текстового поля в область данных, привязанную к набору данных Category, отображает «Bikes, Components, Bikes, Accessories».
=Join(MultiLookup(Split(Fields!CategoryList.Value,","),
Fields!CategoryID.Value,Fields!CategoryName.Value,"Category")),
", ")
B. Использование MultiLookup с многозначным параметром
Предположим, в наборе данных с именем ProductColors есть поле идентификатора цвета ColorID и поле значения цвета Color, как показано в следующей таблице.
ColorID | Color |
---|---|
1 | Красный |
2 | Синий |
3 | Зеленый |
Предположим, параметр с несколькими значениями MyColors не привязан к доступным значениям набора данных. По умолчанию для параметра заданы значения 2 и 3. Следующее выражение при помещении в текстовое поле таблицы объединяет несколько выбранных значений параметра в список с разделителями-запятыми и отображает «Blue, Green».
=Join(MultiLookup(Parameters!MyColors.Value,Fields!ColorID.Value,Fields!Color.Value,"ProductColors"),", ")