Aracılığıyla paylaş


Değerlendirme modeli

Power Query M formül dilinin değerlendirme modeli, hesaplama sırasının hücrelerdeki formüller arasındaki bağımlılıklara göre belirlenebildiği elektronik tablolarda yaygın olarak bulunan değerlendirme modelinden sonra modellenmiştir.

Excel gibi bir elektronik tabloda formüller yazdıysanız, soldaki formüllerin hesaplandığında sağ taraftaki değerlere neden olacağını fark edebilirsiniz:

Evaluation Model 1

Evaluation Model 2

M'de bir ifade, önceki ifadelere ada göre başvurabilir ve değerlendirme işlemi başvurulan ifadelerin hesaplanma sırasını otomatik olarak belirler.

Yukarıdaki elektronik tablo örneğine eşdeğer bir ifade oluşturmak için bir kayıt kullanalım. Bir alanın değerini başlatırken, kayıttaki diğer alanlara alanın adıyla aşağıdaki gibi başvurursunuz:

[
    A1 = A2 * 2,
    A2 = A3 + 1,
    A3 = 1
]

Yukarıdaki ifade aşağıdaki kayda göre değerlendirilir:

[
    A1 = 4,
    A2 = 2,
    A3 = 1
]

Kayıtlar diğer kayıtların içinde veya iç içe yerleştirilmiş olabilir. Bir kaydın alanlarına ada göre erişmek için arama işlecini ([ ]) kullanabilirsiniz. Örneğin, aşağıdaki kayıtta bir kayıt içeren Sales adlı bir alan ve Sales kaydının FirstHalf ve SecondHalf alanlarına erişen Total adlı bir alan vardır:

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = Sales[FirstHalf] + Sales[SecondHalf]
]

Yukarıdaki ifade aşağıdaki kayda göre değerlendirilir:

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = 2100
]

Listedeki bir öğeye sayısal diziniyle erişmek için konumsal dizin işlecini ({ }) kullanırsınız. Liste içindeki değerlere, listenin başından sıfır tabanlı dizin kullanılarak başvurulur. Örneğin, 0 ve 1 dizinleri aşağıdaki listedeki birinci ve ikinci öğelere başvurmak için kullanılır:

[
    Sales =
        {
            [
                Year = 2007,
                FirstHalf = 1000,
                SecondHalf = 1100,
                Total = FirstHalf + SecondHalf // equals 2100
            ],
            [
                Year = 2008,
                FirstHalf = 1200,
                SecondHalf = 1300,
                Total = FirstHalf + SecondHalf // equals 2500
            ]
        },
    #"Total Sales" = Sales{0}[Total] + Sales{1}[Total] // equals 4600
]

Tembel ve istekli değerlendirme

Liste, Kayıt ve Tablo üye ifadelerinin yanı sıra let ifadeleri (İfadeler, değerler ve let ifadelerine git) gecikmeli değerlendirme kullanılarak değerlendirilir. Yani, gerektiğinde değerlendirilirler. Diğer tüm ifadeler, istekli değerlendirme kullanılarak değerlendirilir. Yani, değerlendirme işlemi sırasında karşılaşıldığında hemen değerlendirilirler. Bunu düşünmenin iyi bir yolu, bir liste veya kayıt ifadesini değerlendirmenin, liste öğelerinin veya kayıt alanlarının istendiğinde nasıl hesaplanması gerektiğini bilen bir liste veya kayıt değeri döndüreceğini anımsamaktır (arama veya dizin işleçleri tarafından).