Поделиться через


Теги происхождения для семантических моделей Power BI

Теги происхождения можно использовать в семантических объектах модели, чтобы обеспечить стабильную идентификацию таких объектов в разных семантических моделях. Использование тегов происхождения позволяет функциям Power BI, таким как составные модели поддерживать привязку к ссылочным таблицам или столбцам (с помощью SourceLineageTag), даже если объект исходной семантической модели переименован.

Теги происхождения должны быть уникальными в пределах своей области; Например, две таблицы в одной семантической модели не могут иметь одинаковый тег происхождения. Power BI Desktop обычно назначает GUID для каждого объекта семантической модели, требующего происхождения, но такое назначение не является обязательным и теги происхождения можно изменить на любой другой формат строки.

Отслеживание пользовательских настроек для семантических моделей

Семантические модели могут включать объекты и свойства, производные от других моделей или источников данных. Например, при создании составной модели в семантических моделях Power BI, имена таблиц и столбцов, типы данных, строки форматирования и другие свойства, полученные из исходной модели.

При настройке свойств или удалении объектов в модели, синхронизированных из источника данных, Power BI ожидает, что измененное свойствоProperties и PBI_RemovedChildren примечания указывают на настройку пользователя таким образом, чтобы настройки сохранялись во время следующей синхронизации схемы с источником данных.

Следующие объекты и свойства синхронизируются с источником данных и требуют объявления как измененных свойств, так и удаления объектов:

Сценарий Объектов Настройка свойств Настройка удаления
Импорт / DirectQuery Таблицы, столбцы, связи Имя, DataType Связи 1
Составной Таблицы, столбцы, связи, меры, иерархии, уровни Имя, DataType, IsHidden, FormatString, Description, SummarizeBy, DataCategory, SortByColumn, GroupByColumns, DisplayFolder, IsNullable Все таблицы в удаленной модели, не включенные в локальную модель
DirectLake Таблицы, столбцы Имя, DataType Все таблицы в Lakehouse, не включенные в модель

[1] Power BI автоматически создает связи на основе данных первичного и внешнего ключа из источника данных. Если пользователи удаляют эти связи, Power BI отслеживает изменения, чтобы предотвратить их повторное добавление во время будущей синхронизации схем.

Коллекция ChangedProperties

Коллекция ChangedProperties позволяет указать, какие значения свойств объекта были изменены, указывая, что эти значения больше не могут быть синхронизированы с источником.

Например, при создании составной модели в семантических моделях Power BI имена столбцов создаются из исходной модели. При переименовании столбца в локальной модели необходимо указать свойство Name в качестве измененного свойства.

В следующем примере столбец ProductID из исходной модели был переименован в ProductKey:

table Products 

    column ProductKey 
        dataType: int64          
        lineageTag: 9636345e-0328-43fb-acd3-e7894734d08a 
        sourceLineageTag: 6890686b-4899-4916-9ec2-2e8ff5a05eb7               
        sourceColumn: ProductID 

        changedProperty = Name

Заметка PBI_RemovedChildren

Заметка PBI_RemovedChildren — это заметка модели, объявленная в родительском объекте удаленного элемента, который объявляет намерение пользователя исключить объект из локального объекта. Например, при создании составной модели вы можете выбрать таблицы для загрузки, а все не выбранные таблицы включаются в заметку PBI_RemovedChildren, хранящуюся в NamedExpression источника данных. В моделях импорта и DirectQuery заметка хранится в модели для отслеживания удаления связей.

Не объявляя эту заметку, объекты семантической модели извлекаются во время синхронизации схемы с источником.

В следующем примере таблица удаляется из составной модели. Тег происхождения таблицы исходной модели используется вместо его имени, чтобы обеспечить стабильную идентификацию:

expression 'DirectQuery to AS - AdventureWorks' = 
        let 
            Source = AnalysisServices.Database("[XMLA Endpoint]"), 
            Cubes = Table.Combine(Source[Data]), 
            Cube = Cubes{[Id="Model", Kind="Cube"]}[Data] 
        in 
            Cube 

    annotation PBI_RemovedChildren = [{"remoteItemId":{"analysisServicesObject":{"sourceName":null,"sourceLineageTag":"8e47b52e-1c1a-4029-b6cc-25200d213fcf"}},"objectType":"Table"}]

Рекомендации и ограничения

  • Для моделей Import/DirectQuery требуется changeProperty, только если изменение не может быть сложено в запрос M таблицы, например в таблицах DirectQuery, использующих собственный запрос.
  • Для моделей DirectLake sourceLineageTag должно быть именем таблицы или столбца в хранилище озера или данных.

Следующий шаг

В следующих статьях содержатся полезные сведения: