Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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ı :
- veritabanı
- model
- Ilişki
- ifadeler
- veri kaynakları
- işlevler (DAX Kullanıcı Tanımlı İşlevler
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 vetrueifadesinin 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 (=)
- Varsayılan özelliği olan nesne bildiriminde kullanılır (çok satırlı ve tek satırlı)
- Partition.expression gibi her ifade özelliğinde kullanılır
İ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
- Düzey 2 - Nesne Özellikleri
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-f61288e31a02Bir 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.
İlgili içerik
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.