Использование источников данных JOIN в сопоставлениях модели электронной отчетности (ER) для извлечения данных из нескольких таблиц приложений
При настройке сопоставления или форматов модели электронной отчетности (ER) можно добавить необходимые источники данных типа соединение. Во время разработки источник данных соединение настраивается как набор из нескольких источников данных, каждый из которых возвращает список записей. Для каждого источника данных за исключением первого необходимо определить необходимые условия для присоединения записей к текущим и предыдущим источникам данных. Во время выполнения настроенный источник данных типа соединениевозвращает отдельный объединенный список записей, содержащий поля из записей вложенных источников данных.
В настоящее время поддерживаются следующие типы соединений:
- Внешнее (левое) соединение:
- Присоедините все записи к первому (крайнему левому) источнику данных, а затем любое сопоставление в соответствии с настроенными условиями для второго (крайнего правого) источника данных.
- Внутреннее (правое) соединение:
- Присоедините только записи первого (крайнего левого) источника данных, и только записи второго (крайнего правого) источника данных, соответствующие друг другу в соответствии с настроенными условиями.
В настроенном источнике данных соединение, когда все источники данных являются типами табличных записей, выполнение источника данных соединения можно выполнить на уровне базы данных, используя один оператор SQL. Это утверждение сокращает число вызовов к базе данных, что повышает производительность сопоставления моделей. В противном случае в памяти будет выполнен источник данных соединения.
Примечание
Использование функции VALUEIN в выражениях ER, определяющих условия объединения записей в источниках данных типа соединения, еще не поддерживается. Посетите страницу Конструктор формул в электронной отчетности для получения дополнительных сведений об этой функции.
Чтобы получить дополнительные сведения об этой функции, выполните пример в этой статье.
Пример: использование источников данных JOIN в сопоставлениях модели ER
Следующие шаги описывают, как системный администратор или разработчик электронной отчетности может настроить сопоставление модели электронной отчетности (ER) для получения данных из нескольких таблиц приложений одновременно, используя источники данных типа соединения для повышения производительности доступа к данным. Эти шаги могут быть выполнены для любой компании Dynamics 365 Finance или для служб Regulatory Configuration Services (RCS).
Необходимые условия
Чтобы выполнить примеры в этой статье, необходимо иметь доступ к одной из следующих возможностей в зависимости от того, какая служба используется для выполнения этих шагов:
Доступ к Finance для одной из следующих ролей:
- Разработчик электронной отчетности
- Консультант по функциональным возможностям электронной отчетности
- Системный администратор
Доступ к службам RCS для одной из следующих ролей:
- Разработчик электронной отчетности
- Консультант по функциональным возможностям электронной отчетности
- Системный администратор
Также необходимо сначала выполнить шаги в процедуре Создание поставщика конфигурации и установка его в качестве активного.
Предварительно необходимо загрузить и сохранить следующие примеры файлов конфигурации ER:
Описание содержания | Имя файла |
---|---|
Образец файла конфигурации модели данных ER, который используется как источник данных для примеров. | Model to learn JOIN data sources.version.1.1.xml |
Образец файла конфигурации сопоставления модели ER, который реализует модель данных ER для примеров. | Mapping to learn JOIN data sources.version.1.1.xml |
Образец файла конфигурации формата электронной отчетности. Этот файл описывает данные, которыми требуется заполнить компонент формата электронной отчетности для примеров. | Format to learn JOIN data sources.version.1.1.xml |
Активация поставщика конфигураций
Получите доступ к финансам или RCS в первой сессии вашего веб-браузера.
Перейдите в раздел Управление организацией > Рабочие области > Электронная отчетность.
На странице Конфигурации локализации в разделе Поставщики конфигурации убедитесь, что поставщик конфигурации для демонстрационной компании Litware, Inc. указан в списке и помечен как Активный. Если вы не видите этого поставщика конфигурации, выполните шаги в процедуре Создание поставщика конфигурации и пометка его как активного.
Импорт образца файлов конфигурации электронной отчетности
Выберите Конфигурации отчетности.
Импортируйте файл конфигурации модели данных электронной отчетности.
- Выберите Обменять.
- Выберите Загрузить из XML-файла.
- Нажмите обзор, чтобы найти файл Model to learn JOIN data sources.version.1.1.xml.
- Нажмите ОК.
Импортируйте файл конфигурации сопоставления модели электронной отчетности.
- Выберите Обменять.
- Выберите Загрузить из XML-файла.
- Нажмите обзор, чтобы найти файл Mapping to learn JOIN data sources.version.1.1.xml.
- Нажмите ОК.
Импорт файла конфигурации формата электронной отчетности.
- Выберите Обменять.
- Выберите Загрузить из XML-файла.
- Нажмите обзор, чтобы найти файл Format to learn JOIN data sources.version.1.1.xml.
- Нажмите ОК.
В дереве конфигураций разверните элемент Модель для изучения источников данных JOIN и другие элементы модели (когда это возможно).
Просмотрите список конфигураций ER в дереве, а также сведения о версии на экспресс-вкладке версии — они будут использоваться в качестве источника данных для образца отчета.
Включить параметры трассировки выполнения
Выбрать КОНФИГУРАЦИИ.
Выбор Параметры пользователя.
Задайте параметры трассировки выполнения, как показано на снимке экрана ниже.
Если эти параметры включены, то при каждом выполнении импортированного файла формата ER будет создана трассировка выполнения. Используя подробные сведения о созданной трассировке выполнения, можно анализировать выполнение формата ER и компонентов сопоставления модели ER. Посетите страницу Трассировка выполнения формата ER для устранения проблем с производительностью для получения дополнительной информации о функции трассировки выполнения ER.
Проверка сопоставления модели ER (часть 1)
Проверьте настройки компонента сопоставления модели ER. Компонент настроен для доступа к информации о версиях ER, сведениях о конфигурациях и поставщиках конфигурации без использования источников данных типа соединения.
Выберите конфигурацию Сопоставление для изучения источников данных JOIN.
Выберите конструктор, чтобы открыть список сопоставлений.
Выберите конструктор, чтобы просмотреть сведения о сопоставлении.
Выберите Показать сведения.
В дереве конфигураций разверните элементы модели данных Set1 и Set1.Details:
- Привязка Details: Record list = Versions указывает, что элемент Set1.Details привязан к источникам данных версии, возвращающим записи таблицы ERSolutionVersionTable. Каждая запись в этой таблице представляет отдельную версию конфигурации ER. Содержимое этой таблицы представлено на экспресс-вкладке Версии на странице конфигурации.
- Привязка ConfigurationVersion: String = @.PublicVersionNumber означает, что значение в открытой версии каждой конфигурации ER берется из поля PublicVersionNumber таблицы ERSolutionVersionTable и размещается в элементе ConfigurationVersion.
- Привязка ConfigurationTitle: String = @.'>Relations'.Solution.Name указывает, что имя конфигурации ER берется из поля Имя таблицы ERSolutionTable, используя отношение многие к одному ('>Relations') между таблицами ERSolutionVersionTable и ERSolutionTable. Имена конфигураций ER текущего экземпляра приложения представлены в дереве конфигураций на странице конфигурации.
- Привязка @.'>Relations'.Solution.'>Relations'.SolutionVendor.Name означает, что имя поставщика конфигурации, которому принадлежит текущая конфигурация, берется из поля Имя таблицы ERVendorTable, используя отношение многие к одному между таблицами ERSolutionTable и ERVendorTable. Имена поставщиков конфигураций ER представлены в дереве конфигураций на странице конфигурации в заголовке страницы для каждой конфигурации. Полный список поставщиков конфигураций ER можно найти на странице таблицы Администрирование организации > Электронная отчетность > Поставщик конфигурации.
В дереве конфигураций разверните элемент модели данных Set1.Summary:
- Привязка VersionsNumber: Integer = VersionsSummary.aggregated.VersionsNumber указывает, что элемент Set1.Summary.VersionsNumber связан с полем агрегирования VersionsNumber источника данных VersionsSummary типа GroupBy, который был настроен на возврат количества записей таблицы ERSolutionVersionTable через источник данных версии.
Закройте страницу.
Проверка сопоставления модели ER (часть 2)
Проверьте настройки компонента сопоставления модели ER. Компонент настроен для доступа к информации о версиях ER, сведениях о конфигурациях и поставщиках конфигурации с использованием источника данных типа соединения.
В дереве конфигураций разверните элементы модели данных Set2 и Set2.Details. Привязка Details: Record list = Details указывает, что элемент Set2.Details привязан к источнику данных Сведения, настроенному в качестве источника данных типа соединения.
Источник данных соединения можно добавить, выбрав источник данных Функции\Соединение:
Выберите источник данных Сведения.
Выберите Правка в области источники данных.
Выберите Редактировать соединение.
Выберите Показать сведения.
Эта страница используется для разработки необходимого источника данных типа соединения. Во время выполнения этот источник данных создаст отдельный объединенный список записей из источников данных в сетке соединенный список. Соединение записей будет начато из источника данных ConfigurationProviders, который находится в сетке в качестве первого (для него должен быть указан столбец Тип). Записи всех других источников данных будут присоединены к записям родительского источника данных в зависимости от его порядка в этой сетке. Все соединяемые источники данных должны быть настроены как источник данных, вложенный в целевой источник данных (источник данных
1Versions
, вложенный в1Configurations
; источник данных1Configurations
вложен в ConfigurationProviders). Каждый настроенный источник данных должен содержать условия для соединения. В источнике данных для данного конкретного соединенияопределены следующие соединения:- Каждая запись источника данных ConfigurationProviders (указанная в таблице ERVendorTable) объединяется только с записями 1Configurations (указанная в таблице ERSolutionTable), имеющая одинаковое значение в полях SolutionVendor и RecId. Тип внутреннего соединения используется для данного соединения, а также следующие условия для сопоставления записей:
ФИЛЬТР (Конфигурации, Configurations.SolutionVendor = ConfigurationProviders.RecId)
- Каждая запись источника данных 1Configurations (указанная в таблице ERSolutionTable) объединяется только с записями 1Versions (указанная в таблице ERSolutionVersionTable), имеющая одинаковое значение в полях Solution и RecId. Для данного соединения используется тип внутреннее соединение, а также следующие условия для сопоставления записей:
ФИЛЬТР (ConfigurationVersions, ConfigurationVersions.Solution = ConfigurationProviders.'1Configurations'.RecId)
- Параметр Выполнить настроен как Запрос, то есть этот источник данных соединения будет выполняться во время выполнения на уровне базы данных как прямой вызов SQL.
Для объединения записей источников данных, представляющих таблицы приложений, можно указать условия соединения, используя пары полей, отличных от тех, которые описывают существующие в отношениях AOT между этими таблицами. Этот тип соединения можно настроить так, чтобы он выполнялся также на уровне базы данных.
Закройте страницу.
Выберите Отмена.
В дереве конфигураций разверните элемент модели данных Set2.Summary:
- Привязка VersionsNumber: Integer = DetailsSummary.aggregated.VersionsNumber указывает, что элемент Set2.Summary.VersionsNumber связан с полем агрегирования VersionsNumber источника данных DetailsSummary типа GroupBy, который был настроен на возврат количества соединенных записей источника данных Details типа соединения.
- Параметр местоположения Выполнение настроен как запрос, то есть этот источник данных GroupBy будет выполняться во время выполнения как прямой вызов SQL на уровне базы данных. Это поведение возможно из-за того, что базовый источник данных Сведения типа соединения настроен как выполненный на уровне базы данных.
Закройте страницу.
Выберите Отмена.
Выполнение формата электронной отчетности
Получите доступ к Финансам или RCS во втором сеансе веб-браузера с использованием тех же учетных данных и компании, что и в первом сеансе.
Перейдите в раздел Управление организацией > Электронная отчетность > Конфигурации.
Разверните Модель для изучения источников данных JOIN.
Выберите конфигурацию Формат для изучения источников данных JOIN.
Выберите Конструктор.
Выберите Показать сведения.
Выберите Сопоставление.
Выберите Развернуть/Свернуть.
Этот формат предназначен для заполнения созданного текстового файла новой строкой для каждой версии конфигурации ER (последовательность версий). Каждая созданная строка будет содержать имя поставщика конфигурации, который владеет текущей конфигурацией, именем конфигурации и версией конфигурации, разделенными точкой с запятой. Последняя строка созданного файла будет содержать число обнаруженных версий конфигураций ER (сводная последовательность).
Источники данных Дата и Сводка используются для заполнения сведений о версии конфигурации создаваемого файла:
- Данные из модели данных Set1 используются при выборе нет для источника данных селектор во время выполнения на странице диалогового окна пользователя, если используется формат электронной отчетности.
- Данные из модели данных Set2 используются при выборе Да для источника данных селектор во время выполнения на странице диалогового окна пользователя.
Выберите Выполнить.
На странице диалогового окна выберите нет в поле использовать источник данных JOIN.
Нажмите ОК.
Просмотрите созданный файл.
Анализ трассировки выполнения формата электронной отчетности
В первом сеансе финансов или RCS выберите конструктор.
Выберите трассировка выполнения.
В сетке Трассировка производительности выберите самую верхнюю запись последней трассировки выполнения в формате электронной отчетности, который использовался текущим компонентом сопоставления моделей.
Нажмите ОК.
Статистика выполнения информирует вас о дублированных вызовах в таблицах приложения:
- ERSolutionTable была вызвана столько раз, сколько имеется записей версий конфигурации в таблице ERSolutionVersionTable, в то время как количество таких вызовов может быть уменьшено в разы для повышения производительности.
- ERVendorTable была вызвана дважды для каждой записи версии конфигурации, которая была обнаружена в таблице ERSolutionVersionTable, в то время как количество таких вызовов также может быть уменьшено.
Закройте страницу.
Выполнение формата электронной отчетности
Перейдите на вкладку веб-браузера, используя второй сеанс финансов или RCS.
Выберите Выполнить.
На странице диалогового окна выберите Да в поле использовать источник данных JOIN.
Нажмите ОК.
Просмотрите созданный файл.
Анализ трассировки выполнения формата электронной отчетности
В первом сеансе финансов или RCS выберите конструктор.
Выберите трассировка выполнения.
В сетке Трассировка производительности выберите самую верхнюю запись, представляющую трассировку последнего выполнения в формате электронной отчетности, который использовался текущим компонентом сопоставления моделей.
Нажмите ОК.
Статистические данные информируют о следующем:
- База данных приложения вызывалась один раз для получения записей из таблиц ERVendorTable, ERSolutionTable и ERSolutionVersionTable для получения доступа к обязательным полям.
- База данных приложения была вызвана один раз для расчета количества версий конфигурации с использованием соединений, настроенных в источнике данных Сведения.
Ограничения
Как можно увидеть из примера в этой статье, источник данных JOIN может быть построен из нескольких источников данных, описывающих отдельные наборы данных с записями, которые в конечном итоге нужно объединить. Вы можете настроить эти источники данных с помощью встроенной в ER функцию FILTER. При настройке источника данных так, чтобы он вызывался вне источника данных JOIN, можно использовать диапазоны компаний в качестве части условия для выбора данных. Исходная реализация источника данных JOIN не поддерживает источники данных этого типа. Например, при вызове источника данных с FILTER в области выполнения источника данных FILTER, если вызываемый источник данных содержит диапазоны компаний как часть условия выбора данных, возникает исключение.
В Microsoft Dynamics 365 Finance версии 10.0.12 (август 2020) можно использовать диапазоны компаний в качестве части условий выбора данных в источниках данных на основе FILTER, которые вызываются в рамках выполнения источника данных JOIN. Из-за ограничений в построителе запросов приложений диапазоны компаний поддерживаются только для первого источника данных JOIN.
Пример
Например, вам нужно выполнить единый вызов базы данных приложения, чтобы получить список проводок по внешней торговле нескольких компаний и данные о складской номенклатуре, указанной в этих проводках.
В этом случае вы настраиваете в сопоставлении моделей ER следующие артефакты:
- Корневой источник данных Интрастат, представляющий таблицу Интрастат.
- Корневой источник данных Номенклатуры, представляющий таблицу InventTable.
- Корневой источник данных Компании, который возвращает список компаний (в этом примере DEMF и GBSI) с нужными проводками. Код компании доступен в поле Companies.Code.
-
Корневой источник данных X1 с выражением
FILTER (Intrastat, VALUEIN(Intrastat.dataAreaId, Companies, Companies.Code))
. В качестве части условия для выбора данных это выражение содержит определение диапазонов компанийVALUEIN(Intrastat.dataAreaId, Companies, Companies.Code)
. -
Источник данных X2 в качестве вложенного элемента источника данных X1. Он включает выражение
FILTER (Items, Items.ItemId = X1.ItemId)
.
Наконец, вы можете настроить источник данных JOIN, где X1 — это первый источник данных, а X2 — второй источник данных. Вы можете указать Запрос в качестве параметра выполнения, чтобы ER выполняла этот источник данных на уровне базы данных как прямой вызов SQL.
При запуске настроенного источника данных во время трассировки выполнения ER в в конструкторе сопоставления моделей ER отображается следующая инструкция (как часть трассировки производительности ER).
SELECT ... FROM INTRASTAT T1 CROSS JOIN INVENTTABLE T2 WHERE ((T1.PARTITION=?) AND (T1.DATAAREAID IN (N'DEMF',N'GBSI') )) AND ((T2.PARTITION=?) AND (T2.ITEMID=T1.ITEMID AND (T2.DATAAREAID = T1.DATAAREAID) AND (T2.PARTITION = T1.PARTITION))) ORDER BY T1.DISPATCHID,T1.SEQNUM
Примечание
Если запустить источник данных JOIN, который был настроен таким образом, чтобы он содержал условия выбора данных, которые содержат диапазоны компаний для дополнительных источников данных выполняемого источника данных JOIN, произойдет ошибка.
Дополнительные ресурсы
Конструктор формул в электронной отчетности
Трассировка выполнения формата электронной отчетности для устранения проблем с производительностью