Partilhar via


Marcas de linhagem para modelos semânticos do Power BI

Você pode usar marcas de linhagem em objetos de modelo semântico para permitir a identificação estável desses objetos em diferentes modelos semânticos. O uso de marcas de linhagem permite que recursos do Power BI, como modelos compostos , mantenham sua associação a tabelas ou colunas referenciadas (usando SourceLineageTag), mesmo que o objeto do modelo semântico de origem seja renomeado.

As tags de linhagem devem ser únicas dentro de seu escopo; Por exemplo, duas tabelas no mesmo modelo semântico não podem ter a mesma marca de linhagem. O Power BI Desktop normalmente atribui um GUID para cada objeto de modelo semântico que requer linhagem, mas essa atribuição não é obrigatória e as marcas de linhagem podem ser alteradas para qualquer outro formato de cadeia de caracteres.

Rastreando personalizações do usuário para modelos semânticos

Os modelos semânticos podem incluir objetos e propriedades derivados de outros modelos ou fontes de dados. Por exemplo, ao criar um modelo composto de em modelos semânticos do Power BI, os nomes de tabela e coluna, tipos de dados, cadeias de caracteres de formato e outras propriedades são originados do modelo de origem.

Ao personalizar propriedades ou remover objetos no modelo que foram sincronizados da fonte de dados, o Power BI espera que a propriedade changedProperties e PBI_RemovedChildren anotação sejam definidas para indicar uma personalização do usuário para que as personalizações sejam mantidas durante a próxima sincronização de esquema com a fonte de dados.

Os seguintes objetos/propriedades são sincronizados com a fonte de dados e exigem que você declare quaisquer propriedades modificadas e remoções de objetos:

Cenário Objetos Personalização da propriedade Personalização da remoção
Importação / DirectQuery Tabelas, Colunas, Relações Nome, DataType Relacionamentos 1
Compósito Tabelas, Colunas, Relações, Medidas, Hierarquias, Níveis Nome, DataType, IsHidden, FormatString, Description, SummarizeBy, DataCategory, SortByColumn, GroupByColumns, DisplayFolder, IsNullable Todas as tabelas no modelo remoto não incluídas no modelo local
DirectLake [en] Tabelas, Colunas Nome, DataType Todas as mesas na Lakehouse não incluídas no modelo

[1] Power BI cria automaticamente relações com base em informações de chave primária e estrangeira da fonte de dados. Se os usuários removerem essas relações, o Power BI controlará as alterações para evitar adicioná-las novamente durante a sincronização de esquema futura.

A coleção ChangedProperties

A coleção ChangedProperties permite especificar quais valores de propriedade de objeto foram modificados, indicando que esses valores podem não ser mais sincronizados com a origem.

Por exemplo, ao criar um modelo composto em modelos semânticos do Power BI, os nomes das colunas são originários do modelo de origem. Se você renomear uma coluna em seu modelo local, precisará especificar a propriedade Nome como uma propriedade alterada.

No exemplo a seguir, a coluna ProductID do modelo de origem foi renomeada para ProductKey:

table Products 

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

        changedProperty = Name

A anotação PBI_RemovedChildren

A anotação PBI_RemovedChildren é uma anotação de modelo declarada no objeto pai do item removido que declara a intenção do usuário de excluir um objeto do objeto local. Por exemplo, ao construir um modelo composto, você pode escolher quais tabelas carregare todas as tabelas não selecionadas são incluídas na anotação PBI_RemovedChildren armazenada no NamedExpression da fonte de dados. Nos modelos Import e DirectQuery, a anotação é armazenada no modelo para acompanhar as remoções de relacionamento.

Não declarar essa anotação faz com que objetos de modelo semântico sejam recuperados durante a sincronização do esquema com a origem.

No exemplo a seguir, uma tabela é removida do modelo composto. A tag de linhagem da tabela do modelo de origem é usada em vez de seu nome para garantir uma identificação estável:

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"}]

Considerações e limitações

  • Para modelos Import/DirectQuery, o changedProperty é necessário somente quando a alteração não pode ser dobrada na consulta M da tabela, como em tabelas DirectQuery que utilizam uma consulta nativa.
  • Para modelos DirectLake, o sourceLineageTag deve ser o nome da tabela/coluna no Lakehouse/data warehouse.

Próximo passo

Os seguintes artigos contêm informações adicionais úteis: