Referência de TMDL – Visão geral de objetos

aplica-se a: SQL Server 2016 e posteriores do Analysis Services Fabric/Power BI Premium do Azure Analysis Services

Todos os objetos TMDL têm uma correspondência exata com suas propriedades de tom (modelo de objeto de tabela) , exceto para Translations e Role members.

Por exemplo, aqui está a representação de coluna calculada TMDL:


table Calendar

  column 'Date (Year-Month)' = DATE([Year], [Month],1)
    dataType: dateTime
    formatString = mmm yyyy
    lineageTag: 0e65a7a5-6c15-437d-8333-10653d8d673f
    summarizeBy: none

    annotation SummarizationSetBy = automatic

Cada uma das propriedades TMDL anteriores é mapeada para as propriedades da classe CalculatedTableColumn da seguinte maneira:

Traduções em TMDL

No TOM, as traduções são representadas como uma coleção de objetos ObjectTranslation. Para interação e legibilidade ideais, o TMDL quebra o princípio do alinhamento com a árvore de objetos TOM e replica a hierarquia de modelos sob cada cultura como propriedades TMDL virtuais.

Para cada objeto, as traduções podem ser adicionadas para as seguintes propriedades:

Propriedade Descrição
legenda Tabela/coluna/medida traduzida/... título que aparece em qualquer aplicativo cliente que dê suporte a visualizações de um modelo tabular.
descrição A descrição traduzida aparece como informações de modelo.
displayFolder pasta de exibição de coluna/medida/hierarquia traduzida usada por aplicativos cliente para organizar o conteúdo.

O exemplo de código a seguir é uma tradução TMDL para a cultura portuguesa (pt-PT):

culture pt-PT
 translations
  model Model
   caption: Modelo
   description: Modelo
   table Calendar
    caption: Calendário
   table Sales
    caption: Vendas
    measure 'Sales Amount'
     caption: Total de Vendas
     displayFolder: Métricas Base
    measure 'Sales Amount (LY)'
     caption: Total Vendas (Ano Anterior)
     displayFolder: Métricas Base
    measure 'Sales Amount (YTD, LY)'
     displayFolder: Métricas Base
   table Product
    caption: Produto
    description: Tabela de Produto
    column Product
     caption: Produto
     description: Coluna de Produto
    column ProductKey
     caption: Chave de Produto
    column Weight
     caption: Peso
    hierarchy 'Product Hierarchy'
     caption: Hierarquia de Produto
   table Customer
    caption: Cliente
    column Address
     caption: Morada
   table Store
    caption: Loja
    column StoreKey
     caption: Código de Loja

 linguisticMetadata =   
   {
     ...
   }

Membros da função no TMDL

Os membros da função podem ser numerados em centenas ou milhares, portanto, serializar cada membro como um objeto separado usando sua representação tom nativa (WindowsModelRoleMember ou ExternalModelRoleMember) seria ilegível. Para otimizar a interação e a legibilidade, o TMDL quebra o princípio do alinhamento com a árvore de objetos TOM e otimiza a representação de membros de função para o cenário mais comum: Microsoft Entra ID (anteriormente conhecida como Azure AD) e Windows Identity.

As seguintes regras são aplicadas:

  • A ID do membro não é serializada e pressupõe o mesmo valor que o nome
  • Linhas em branco entre membros não são emitidas
  • Os membros são emitidos no final após as permissões

A propriedade padrão do membro determina o tipo de membro:

Valor da propriedade padrão Descrição
utilizador ExternalModelRoleMember - IdentityProvider = AzureAD, RoleMemberType = User
grupo ExternalModelRoleMember - IdentityProvider = AzureAD, RoleMemberType = Group
Automático ExternalModelRoleMember - IdentityProvider = AzureAD, RoleMemberType = Auto
activeDirectory WindowsModelRoleMember

O exemplo de código a seguir é uma função TMDL com membros ExternalModelRoleMembers:


role 'StoreRole'
 modelPermission: read

 tablePermission Store = 'Store'[Store Code] IN {"1","2","4"}
 
 member 'user1@company.com'
 member 'group@domain.com' = group
 member 'user2@company.com' = auto
 member user1FromCustomProvider
  identityProvider = customProviderName
 member group1FromCustomProvider
  identityProvider = customProviderName

O exemplo de código a seguir é uma função TMDL com membros WindowsModelRoleMember:


role 'StoreRole'
 modelPermission: read

 tablePermission Store = 'Store'[Store Code] IN {"1","2","4"}
 
 member company\user1 = activeDirectory
 member company\group = activeDirectory