Tablosal Model Tanım Dili (TMDL)

Şunlar için geçerlidir: SQL Server 2016 ve üzeri Analysis Services Azure Analysis Services Fabric/Power BI Premium

Tablosal Model Tanım Dili (TMDL), uyumluluk düzeyi 1200 veya üzeri olan tablosal veri modelleri için bir nesne modeli tanımı söz dizimidir.

TMDL'nin temel öğeleri şunlardır:

  • Tablosal Nesne Modelinin (TOM) tamamıyla tam uyumluluk. Her TMDL nesnesi TOM ile aynı özellikleri kullanıma sunar.
  • Metin tabanlı ve insan etkileşimi ve okunabilirliği için iyileştirilmiş. TMDL, YAML'ye benzer bir dil bilgisi söz dizimi kullanır. Her TMDL nesnesi en az sınırlayıcı içeren metinde temsil edilir ve üst-alt ilişkileri işaretlemek için girinti kullanır.
  • Özellikle Veri Çözümleme İfadesi (DAX) ve M gibi farklı içerik türlerindeki ekleme ifadelerine sahip özelliklerde daha iyi düzenleme deneyimi.
  • Her model nesnesinin ayrı bir dosya gösterimine sahip olduğu ve daha kolay kaynak denetimine sahip olduğu klasör gösterimi nedeniyle işbirliği için daha iyidir.

TMDL'nin önemli bir yönü, TOM nesne yapısını belirtmek için boşluk girintisinin kullanılmasıdır. Aşağıdaki örnek, TMDL kullanırken tablosal modeli temsil etme işleminin ne kadar kolay olduğunu gösterir:

database Sales
	compatibilityLevel: 1567

model Model    
    culture: en-US    

table Sales
    
    partition 'Sales-Partition' = m
        mode: import
        source = 
            let
                Source = Sql.Database(Server, Database)
                …
    
    measure 'Sales Amount' = SUMX('Sales', 'Sales'[Quantity] * 'Sales'[Net Price])
        formatString: $ #,##0
   
    column 'Product Key'
        dataType: int64
        isHidden
        sourceColumn: ProductKey
        summarizeBy: None
 
    column Quantity
        dataType: int64
        isHidden
        sourceColumn: Quantity
        summarizeBy: None

    column 'Net Price'
        dataType: int64
        isHidden
        sourceColumn: "Net Price"
        summarizeBy: none

table Product
    
    partition 'Product-Partition' = m
        mode: import
        source = 
            let
                Source = Sql.Database(Server, Database),
                …

    column 'Product Key'
        dataType: int64
        isKey
        sourceColumn: ProductKey
        summarizeBy: none

relationship cdb6e6a9-c9d1-42b9-b9e0-484a1bc7e123
    fromColumn: Sales.'Product Key'
    toColumn: Product.'Product Key'

role Role_Store1
    modelPermission: read

    tablePermission Store = 'Store'[Store Code] IN {1,10,20,30}

expression Server = "localhost" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]

expression Database = "Contoso" meta [IsParameterQuery=true, Type="Text", IsParameterQueryRequired=true]

TMDL klasör yapısı

TMSL'nin aksine, TMDL bir klasör yapısı kullanır. Varsayılan klasör yapısı yalnızca bir alt klasör düzeyine sahiptir ve bunların tümü içinde .tmdl dosyaları bulunur:

  • Kültür
  • Perspektifler
  • roles
  • tables

Ve kök dosyaları :

TMDL klasörü örneği aşağıda verilmiştir:

TMDL/
├── cultures/
│   ├── en-US.tmdl
│   └── pt-PT.tmdl
├── perspectives/
│   └── perspective1.tmdl
├── roles/
│   ├── role1.tmdl
│   └── role2.tmdl
├── tables/
│   ├── About.tmdl
│   ├── Calendar.tmdl
│   ├── Customer.tmdl
│   ├── Product.tmdl
│   ├── Sales.tmdl
│   └── Store.tmdl
├── relationships.tmdl
├── functions.tmdl
├── expressions.tmdl
├── dataSources.tmdl
├── model.tmdl
└── database.tmdl

Tanımlar şunlardır:

  • Veritabanı tanımı için bir dosya.
  • Model tanımı için bir dosya.
  • Modeldeki tüm veri kaynakları için bir dosya.
  • Modeldeki tüm ifadeler için bir dosya.
  • Tüm işlevler için bir dosya (modeldeki DAX Kullanıcı Tanımlı İşlevler.
  • Modeldeki tüm ilişkiler için bir dosya.
  • Her kültür dil şeması için bir dosya.
  • Her perspektif için bir dosya.
  • Her rol için bir dosya.
  • Her tablo için bir dosya.
  • Tabloların (Sütun, Hiyerarşiler, Bölümler,...) tüm iç meta veri özellikleri üst tablo TMDL dosyasında bulunur.

TMDL API

Tablosal Model Betik Dili'ne (TMSL) benzer şekilde, TMDL Serileştirmeyi işlemek için bir sınıf vardır. TMDL için sınıf, Microsoft.AnalysisServices.Tabular ad alanı altında TmdlSerializer sınıfıdır.

TmdlSerializer sınıfı, TMDL belgelerini seri hale getirmek ve seri durumdan çıkarmak için yöntemleri kullanıma sunar:

Klasör Serileştirme

public static void SerializeDatabaseToFolder (Database database, string path)

  • Tom veritabanı nesnesini ve TMDL çıkış yolunu alır.
  • TOM veritabanını bir TMDL klasör gösterimine serileştirir.

Bir klasöre seri hale getirme hakkında daha fazla bilgi edinin.

public static Database DeserializeDatabaseFromFolder (string path)

  • TMDL klasörünün tam yolunu alır.
  • TMDL klasörünün TOM veritabanı nesne gösterimini döndürür.

Daha fazla klasörlerden deserilize etme hakkında bilgi edinin.

Dize Serileştirme

public static string SerializeObject (MetadataObject object, bool qualifyObject = true)

  • Bir TOM nesnesi alır ve TMDL metin gösterimini döndürür.

Bir nesneyi dizeye seri hale getirme hakkında daha fazla bilgi edinin.

Akış Serileştirme

TMDL'yi seri hale getirip akışlara veya akışlardan seri durumdan çıkararak, bir TOM nesnesini platformlar arasında depolama, iletim ve birlikte çalışabilirlik için bayt dizilerine dönüştürebilirsiniz. Stream API ayrıca hangi TMDL belgelerinin yüklendiğini ve hangi TMDL belgelerinin çıkışını aldığınızı denetlemenize olanak tanır.

TMDL Stream serileştirmesi MetadataSerializationContext sınıfı tarafından işlenir.

Akışları kullanarak TMDL'ye/TMDL'den serileştirme hakkında daha fazla bilgi edinin.

TMDL dili

Nesne bildirimi

Sunucu nesnesi dışında, TMDL Microsoft.AnalysisServices.Tabular ad alanında TOM Veritabanı nesne ağacının tamamını kullanıma sunar.

TMDL nesnesi, TOM nesne türü ve ardından adı belirtilerek bildirilir. Aşağıdaki kod örneğinde, her nesne türü: model, tableve column ardından bir nesne adı eklenir.

model Model    
    culture: en-US    

table Sales
    
    measure Sales = SUM(…)
        formatString: $ #,##0

    column 'Customer Key'
        datatype: int64
        sourceColumn: CustomerKey

partition veya measure gibi nesneler, eşittir () sınırlayıcısından sonra atanabilecek varsayılan özelliklere sahiptir; bu, nesne bildiriminin aynı satırında veya çok satırlı bir ifade için bir sonraki satırda yapılabilir.

table Sales

    partition Sales-Part1 = m
        mode: import
        ...        
    
    measure Sales = SUM(…)
        formatString: $ #,##0

    measure 'Sales (ly)' = 
            var ly = ...
            return ly
        formatString: $ #,##0

TMDL nesne adı, aşağıdaki karakterlerden herhangi birini içeriyorsa tek tırnak (') içine alınmalıdır:

  • Nokta (.)
  • Eşittir (=)
  • İki nokta üst üste (:)
  • Tek Tırnak (')
  • Boşluk ( )

Nesne adı tek tırnak (') içeriyorsa, kaçış için iki tek tırnak kullanın.

Nesne Özellikleri

Nesne özellikleri, nesne bildiriminden veya nesne varsayılan özelliği çok satırlı ifadeden sonra belirtilir. Nesne özellik değerleri iki nokta üst üste (:) sınırlayıcıdan sonra belirtilir. Örneğin:

table Sales
    lineageTag: e9374b9a-faee-4f9e-b2e7-d9aafb9d6a91    

    column Quantity
        dataType: int64
        isHidden
        isAvailableInMdx: false
        sourceColumn: Quantity

    measure 'Sales Amount' = 
            var result = SUMX(...)
            return result
  formatString: $ #,##0
  displayFolder: " My ""Amazing"" Measures"

Aşağıdaki kurallar özellik değerleri için geçerlidir:

  • Değer, iki noktadan sonra aynı satırda olmalı ve birden fazla satırda olamaz.

  • Metin özelliği değerleri

    • Baştaki ve sondaki çift tırnaklar isteğe bağlıdır ve serileştirme sırasında otomatik olarak çıkarılır.
    • Metin sonda veya başta boşluk içeriyorsa, çift tırnak işaretiyle alınmalıdır.
    • Çift tırnak içine aldığınızda, eğer değer çift tırnak içeriyorsa, bunları gizlemek için iki çift tırnak kullanın (yukarıdaki kod örneğindeki displayFolder özelliğine bakın).
  • Boole özellikleri , önceki örnekteki 'isAvailableInMdx' özelliğinde olduğu gibi standart anahtar/değer çifti söz dizimi kullanılarak ayarlanabilir. Bunlar, yalnızca özellik adının bildirildiği ve true ifadesinin varsayıldığı bir kısayol yazımı kullanılarak da ayarlanabilir. Örneğin, önceki örnekteki 'isHidden' özelliğine bakın.

Adlandırılmış nesne referansları

Bazı nesne özellikleri diğer model nesnelerine başvurular barındırıyor, örneğin:

  • Hiyerarşi düzeylerindeki sütuna başvuru.
  • tablo sütunlarının her birinde sortByColumn referansı.
  • Perspektiflerde tablo/sütun/ölçü referansı.

TMDL'de başvurular nesne adı kullanılarak yapılır ve nesne bildiriminin aynı kaçış ve tek tırnak (') kapsayan gereksinimlerini izler. Aşağıdaki kod örneğinde, başka bir nesneye başvuru tutan nesne özellikleri görürsünüz: column.sortByColumn, level.columnve perspectiveMeasure.measureperspectiveTable.table.


table Product

    column Category
        sortByColumn: 'Category Order'    

 hierarchy 'Product Hierarchy'

  level Category   
   column: Category  
 

perspective Product

 perspectiveTable Product

        perspectiveMeasure '# Products'

Tam nitelikli bir isme başvurulması gerektiğinde, TMDL bir nesneye başvurmak için nokta gösterimi kullanır, örneğin: 'Table 1'.'Column 1'

Alt nesneler

TOM nesne ağacı birçok yerde ve farklı düzeylerde alt nesneler içerir. Örneğin:

  • Model nesnesi tablo, rol ve ifade nesneleri içerir.
  • Tablo nesnesi sütun, ölçü ve hiyerarşi nesneleri içerir.

TMDL, alt koleksiyonlar'ı açıkça tanımlamaz. Bunun yerine, ilgili üst öğelerinin kapsamındaki tüm geçerli alt öğeler, ilgili koleksiyonun öğelerini zımni olarak oluşturur. Örneğin, belirli bir tablonun kapsamındaki tüm sütun öğeleri, burada gösterildiği gibi TOM'da bu tablonun sütun koleksiyonunun öğeleri haline gelir:

table Sales

    measure 'Sales Amount' = SUMX('Sales', [Quantity] * [Net Price])

    measure 'Total Quantity' = SUM('Sales'[Quantity])

    measure 'Sales Amount YTD' = TOTALYTD([Sales Amount], 'Calendar'[Date])    

Alt nesnelerin bitişik olması gerekmez. Örneğin, sütunları ve ölçüleri herhangi bir sırada ve karışık şekilde bildirebilirsiniz.

Varsayılan özellikler

Bazı nesne türlerinin çoğu zaman ifadeler gibi ele alınan varsayılan bir özelliği vardır. Varsayılan özellik nesne türüne özgüdür. Uygun olduğunda, özellik değeri veya ifadesi, bölüm bildiriminden sonra eşittir işareti (=) sınırlayıcısından sonra belirtilir.

Desteklenen söz dizimi:

  • Değer, bölüm üst bilgisi ile aynı satırda belirtilir.
  • Değer, bölüm üst bilgisinin ardından çok satırlı bir ifade olarak belirtilir.

Aşağıdaki kod örneğinde ölçü Sales Amount ve bölüm Sales-Partition1 tek satırdır ve ölçü Quantity çok satırlıdır:

table Sales

    measure 'Sales Amount' = SUM(...)
        formatString: $ #,##0

    measure Quantity = 
            var result = SUMX (...)
            return result
        formatString: #,##0

    partition Sales-Partition1 = m
  mode: import
  source =
   let
       ...
   in
       finalStep

Expressions

TOM'da metin özelliği olarak yer alsa da, TMDL'de özel olarak ayrıştırılan nesne özellikleri vardır. M veya DAX ifadelerinde tırnak işaretleri veya köşeli ayraçlar gibi özel karakterler içerebileceğinden metnin tamamı tam olarak okunur. İfadeler çok satırlı veya tek satırlı olabilir. Çok satırlıysa, özellik veya nesne bildiriminin hemen ardından satırda bulunmalıdır.

TMDL'deki bir ifade değeri, aşağıdaki örnekte olduğu gibi eşittir (=) sınırlayıcıdan sonra belirtilir:

table Table1

    partition 'partition 1' = m
        mode: import
        source =
            let
            ...
            in
                finalStep
    
    measure Measure1 = SUM(...)

    measure Measure2 =
            var result = SUMX ( 
                ...
            )
            return result
        formatString: $ #,##0

İfadeler için aşağıdaki özel kurallar geçerlidir:

  • Çok satırlı ifadelerin, ebeveyn nesnenin özelliklerine kıyasla bir düzey daha derin girintili olması ve ifadenin tamamının bu girinti seviyesinde kalması gerekir.
  • Üst nesnenin girintili düzeyinin dışındaki tüm dış girinti boşlukları silinecek.
  • Dikey boşluklara (boşluk içermeyen boş satırlar) izin verilir ve ifadenin bir parçası olarak kabul edilir.
  • Sondaki boş satır ve boşluklar kaldırılır.
  • Farklı bir girintiyi zorlamak veya sondaki boş çizgileri veya boşlukları korumak için, üç ters tırnakla (```) çevreleyin.
  • Varsayılan olarak, ifade değeri gidiş dönüşte değişikliğe neden olabilecek herhangi bir şey içeriyorsa (örneğin, sondaki boşluklar, boşluklu boş çizgiler) TMDL serileştiricisi ifade değerini tırnak işaretleriyle çevreler.

Üç arka nokta (```) içine alınmış ifadeler, girintileme, boş satırlar ve boşluklar dahil olmak üzere ayrıntılı olarak okunur. Sınırlayıcı, eşittir işaretinden (=) hemen sonra ve ifadeyi izleyen satırdan sonra uygulanmalıdır ve aşağıdaki örnekte olduğu gibi bundan sonra hiçbir şey olamaz:

table Table1

    partition partition1 = m
        mode: import
        source = ```
            let
            ...
            in
                finalStep

            ```

    measure Measure1 = ```
                var myVar = Today()
                …
                return result
            ```

Üç arka uç (```) sınırlayıcısını kullanmak isteğe bağlıdır ve yalnızca benzersiz durumlarda gereklidir. Çoğu durumda, doğru girinti ve nesne bildiriminin kullanılması, özelliğine eklediğiniz ifadenin doğru ayrıştırılmasını sağlar.

İfade backticks içine alındığında, aşağıdaki kurallar geçerlidir:

  • Üç arka uç (```) arasındaki her şey çok bloklu ifadenin parçası olarak kabul edilir ve TMDL girintileme kuralları uygulanmaz. Son sınırlayıcı, ifade içindeki girintiyi belirler.
  • İfade içindeki göreli girinti korunur. Uç sınırlayıcı (```), ifadenin sol sınırını belirler (önceki örnekteki 'Ölçü1' bölümüne bakın).

Aşağıdaki özellikler ifade olarak değerlendirilir:

Nesne Türü Mülkiyet İfade dili
Ölçüm Expression DAX
İşlev Expression DAX
MPartitionSource Expression M
HesaplananBölümKaynağı Expression DAX
QueryPartitionSource Query NativeQuery
Hesaplama Öğesi Expression DAX
BasicRefreshPolicy SourceExpression, PollingExpression M
KPI Durum İfadesi (StatusExpression), Hedef İfadesi (TargetExpression), Eğilim İfadesi (TrendExpression) DAX
LinguisticMetadata Content XML veya Json
JSONGenişletilmişÖzellik Değer Json
FormatStringTanımı Expression DAX
Veri Kapsamı Tanımı Expression DAX
CalculationGroupExpression Expression DAX
NamedExpression Expression DAX
DetailRowsDefinition Expression DAX
Tablo İzni FilterExpression DAX
CalculatedColumn Expression DAX

Nesne türüne göre varsayılan özellikler

Aşağıdaki tabloda nesne türüne göre varsayılan özellik ve ifade dili gösterilmektedir:

Nesne türü Varsayılan özellik İfade dili
Ölçüm Expression DAX
İşlev Expression DAX
CalculatedColumn Expression DAX
Hesaplama Öğesi Expression DAX
FormatDizeTanımı Expression DAX
DetailRowsDefinition Expression DAX
CalculationExpression Expression DAX
Veri Kapsamı Tanımı Expression DAX
Tablo İzni FilterExpression DAX
Sütun İzni Meta Veri İzni MetadataPermission Sabit Listesi
NamedExpression Expression M
MPartitionSource Expression M
HesaplananBölümKaynağı Expression DAX
JSONGenişletilmişÖzellik Değer Json
Açıklama Değer Metin
StringExtendedProperty Değer Metin
Veri Kaynağı Türü DataSourceType Sabit Listesi
Partition KaynakTürü PartitionSourceType Sabit Listesi
DeğişenÖzellik Mülkiyet Özellik Metni
HariciModelRolÜyesi Üye Türü RoleMemberType Sabit Listesi
Herhangi bir Özel JSON Özelliği (örneğin, DataAccessOptions) JSON Belgesi Json
LinguisticMetadata Content Json

Açıklamalar

TMDL, açıklamalar için birinci sınıf destek sağlar. Model belgeleri için en iyi yöntem, her TOM nesnesi için açıklama sağlamaktır. TMDL, açık söz dizimi desteğiyle açıklamaları özel bir özellik olarak ele alır. Diğer birçok dilden alınan örneklerin ardından, üç eğik çizgi (///) söz dizimi kullanılarak her nesne bildiriminin üzerinde açıklamalar belirtilir.

Açıklama bloğu ucu ile nesne türü belirteci arasında boşluk kullanılmasına izin verilmez.

Açıklamalar birden çok satıra bölünebilir. TMDL seri hale getiricisi, yayılan belge satırlarını maksimum uzunluk altında tutmak için nesne açıklamalarını birden çok satıra böler. Varsayılan uzunluk üst sınırı 80 karakterdir.

/// Table Description
table Sales

    /// This is the Measure Description
    /// One more line
    measure 'Sales Amount'' = SUM(...)
        formatString: #,##0

Kısmi bildirim

TMDL aynı belgede nesne bildirimini zorlamaz. Ancak, nesne tanımını birden çok dosya arasında bölmenin mümkün olduğu C# kısmi sınıflarına benzer. Örneğin, bir [table].tmdl dosyasında tablo tanımı bildirebilir ve ardından burada gösterildiği gibi tüm tablolardaki tüm ölçülerin tek bir [measures].tmdl dosyasında tanımlanmış olması gerekir:

table Sales

    measure 'Sales Amount' = SUM(…)
        formatString: $ #,##0

table Product

    measure CountOfProduct = COUNTROWS(…)

Ayrıştırma hatasını önlemek için aynı özellik iki kez bildirilemiyor. Örneğin, iki farklı TMDL belgesinde aynı tablo için aynı ada sahip iki ölçü bildirilmesi hataya neden olur.

Nesne başvuruları

Ref anahtar sözcüğünü ve ardından nesne türünü ve adını kullanarak başka bir TMDL nesnesine başvurabilirsiniz.

Örneğin, dize serileştirme API'sini kullanarak bir Column nesnesini seri hale getirdiğinizde sonuç şöyle olur:

ref table Table1
	column Column1
		datatype: int64
		sourceColumn: Column1

Deterministik koleksiyon sıralaması

ref anahtar sözcüğü, TOM <> TMDL gidiş dönüşlerinde koleksiyon sıralamasını tanımlamak ve korumak için de kullanılır. Tek tek dosyalar halinde seri hale getirilen TMDL nesnelerinde kaynak denetimi farklarından kaçınmak özellikle önemlidir: Tablolar, Roller, Kültürler ve Perspektifler. ref anahtar sözcüğü, TOM'dan gelen öğe sıralamasını üst nesne TMDL dosyasında bildirmek için kullanılır.


model Model

ref table Calendar
ref table Sales
ref table Product
ref table Customer
ref table About

ref culture en-US
ref culture pt-PT

ref role 'Stores Cluster 1'
ref role 'Stores Cluster 2'

Aşağıdaki kurallar uygulanır:

  • TMDL Seri Durumdan Çıkarma sırasında:
    • Eksik TMDL dosyasına sahip nesneler TMDL'de referans alınsa bile yoksayılır.
    • Başvurulmayan ancak mevcut TMDL dosyası olan nesneler koleksiyonun sonuna eklenir.
  • TMDL Serileştirme sırasında:
    • TOM'daki tüm koleksiyon nesnelerine ref anahtar sözcüğü kullanılarak başvurulur.
    • Yalnızca bir öğeye sahip koleksiyonlar referans yaymaz.
    • Aynı nesne türündeki referanslar arasında boş satırlar gösterilmez.

Özellik değeri sınırlayıcıları

Özellik değeri atamak için yalnızca iki sınırlayıcı/simge vardır:

  • Eşittir (=)

  • İki nokta üst üste (:)

    • İfade olmayan her özellik değeri için kullanılır. Model referanslarını içeren özelliklerin dahil edilmesi.

Girinti

TMDL, TOM hiyerarşisinin yapısını belirtmek için katı boşluk girintisi kuralları kullanır. TMDL belgesi varsayılan tek sekmeli girinti kuralını kullanır.

Her nesnenin üç girinti düzeyi olabilir:

  • Düzey 1 - Nesne Bildirimi
    • Düzey 2 - Nesne Özellikleri
      • Düzey 3 - Nesne özelliği çok satırlı ifadeler

TMDL belgesinde, aşağıdaki durumlarda girinti uygulanır:

  • Nesne bölümü başlığı ile nesnenin özellikleri arasında (tablo -> özellikler).

    table Sales
        isHidden
        lineageTag: 9a48bea0-e5fb-40fa-9e81-f61288e31a02
    
  • Bir nesne ve onun alt nesneleri arasında (tablo -> ölçüleri).

    table Sales
    
        measure 'Sales Amount' = SUMX(...)
    
        measure 'Total Quantity' = SUM(...)
    
  • Bir nesne ile çok satırlı ifadeler (tablo -> ölçü -> ifade) arasında.

    table Sales
    
        measure 'Sales Amount' = 
                var result = SUMX(...)
                return result
            formatString: $ #,##0
    
  • Çok satırlı ifadelerin, nesne özelliklerinden bir düzey daha derin girintili olması ve ifadenin tamamının bu girinti düzeyi içinde olması gerekir ( ifadelere bakın).

Model'in veritabanı ve doğrudan alt nesnelerinin, kök Model veya Veritabanı altında örtük olarak iç içe yerleştirildiği varsayıldığından girintili olması gerekmez:

  • model
  • tables
  • paylaşılan ifadeler
  • roles
  • Kültür
  • Perspektifler
  • Ilişki
  • veri kaynakları
  • sorgu grupları
  • model düzeyinde ek açıklamalar
  • model düzeyinde genişletilmiş özellikler

Bu indention kurallarına uyulmaması bir ayrıştırma hatası oluşturur.

Boşluk

TMDL, varsayılan olarak, özellik ve ifade değerlerinin içindeki boşluklara, ters tırnaklar (```) veya çift tırnaklar (") içine alınmadığında aşağıdaki kuralları uygular:

  • Özellik değerlerinde, baştaki ve sondaki boşluklar kırpılır.
  • İfadelerde, ifadelerin sonundaki boşluk çizgileri bırakılır.
  • Boşluk çizgileri boş çizgilere (boşluk/sekme olmadan) kırpılır.

Kasa

Varsayılan olarak, TMDL API serileştirme/yazma işlemlerinde camelCase kullanır.

  • Nesne türleri
  • Anahtar sözcükler
  • Enum değerleri

Seri durumdan çıkarma/okuma sırasında TMDL API'si büyük/küçük harf duyarsızdır.

TMDL hakkında bilgi edindiğinize göre, Power BI anlamsal modelinin TMDL modeli gösterimini nasıl alıp dağıtacağınızı öğrenmek için TMDL ile çalışmaya başlayın bölümüne bakın.