İfadeler, değerler ve let ifadesi
Power Query M formül dili sorgusu, karma sorgusu oluşturan formül ifadesi adımlarından oluşur. Bir formül ifadesi değerlendirilebilir (hesaplanabilir) ve bir değer elde edilebilir. let ifadesi hesaplanacak bir değer kümesini kapsüller, adlar atanır ve sonra in deyimini izleyen sonraki bir ifadede kullanılır. Örneğin, bir let ifadesi Text.Proper değerine eşit olan ve uygun durumda bir metin değeri veren bir Source değişkeni içerebilir.
let ifadesi
let
Source = Text.Proper("hello world")
in
Source
Yukarıdaki örnekte, Text.Proper("hello world")
olarak değerlendirilir "Hello World"
.
Sonraki bölümlerde dildeki değer türleri açıklanmaktadır.
İlkel değer
İlkel değer sayı, mantıksal, metin veya null gibi tek parçalı değerdir. Boş değer, herhangi bir verinin yokluğunu belirtmek için kullanılabilir.
Tür | Örnek değer |
---|---|
İkilik | 00 00 00 02 // puan sayısı (2) |
Tarih | 5/23/2015 |
DateTime | 23.05.2015 12:00:00 |
DateTimeZone | 23.05.2015 12:00:00 -08:00 |
Süre | 15:35:00 |
Mantıksal | true ve false |
Boş | null |
Sayı | 0, 1, -1, 1.5 ve 2.3e-5 |
Metin | "abc" |
Saat | 12:34:12 PM |
İşlev değeri
İşlev, bağımsız değişkenlerle çağrıldığında yeni bir değer üreten bir değerdir. İşlevler, işlevin parametrelerini parantez içinde listeleyerek, ardından gider simgesi => ve ardından işlevi tanımlayan ifadeyle yazılır. Örneğin, iki parametresi olan ve parametre1 ve parametre2 üzerinde hesaplama yapan MyFunction adlı bir işlev oluşturmak için:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
MyFunction çağrısı sonucu verir:
let
Source = MyFunction(2, 4)
in
Source
Bu kod 3 değerini üretir.
Yapılandırılmış veri değerleri
M dili aşağıdaki yapılandırılmış veri değerlerini destekler:
Not
Yapılandırılmış veriler herhangi bir M değeri içerebilir. Birkaç örnek görmek için Ek yapılandırılmış veri örnekleri'ne gidin.
Liste
Liste, { } küme ayracı karakterleri içine alınmış sıfır tabanlı sıralı bir değer dizisidir. { } küme ayracı karakterleri, dizin konumuna göre Liste'den öğe almak için de kullanılır. Daha fazla bilgi için Değerleri listeleme bölümüne gidin.
Not
Power Query M sonsuz bir liste boyutunu destekler, ancak bir liste değişmez değer olarak yazılırsa, listenin uzunluğu sabittir. Örneğin, {1, 2, 3} sabit uzunluğu 3'tür.
Aşağıda bazı Liste örnekleri verilmiştir.
Değer | Tür |
---|---|
{123, true, "A"} | Sayı, mantıksal ve metin içeren liste. |
{1, 2, 3} | Sayı listesi |
{ {1, 2, 3}, {4, 5, 6} } |
Sayı listesi |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Kayıt Listesi |
{123, true, "A"}{0} | Listedeki ilk öğenin değerini alır. Bu ifade 123 değerini döndürür. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
İlk List öğesinden ikinci öğenin değerini alır. Bu ifade 2 değerini döndürür. |
Kaydet
Kayıt, bir alan kümesidir. Alan, adın alanın kaydı içinde benzersiz bir metin değeri olduğu bir ad/değer çiftidir. Kayıt değerlerinin söz dizimi, adların tırnak işareti olmadan yazılmasına olanak tanır ve bu formda tanımlayıcılar olarak da adlandırılır. Tanımlayıcı aşağıdaki iki biçimi alabilir:
OrderID gibi identifier_name.
#"tanımlayıcı adı" gibi #"Bugünün verileri: ".
Aşağıda 1, 1, "Olta" ve 100,00 değerlerine sahip "OrderID", "CustomerID", "Item" ve "Price" adlı alanlar içeren bir kayıt verilmiştir. Kare ayraç karakterleri [ ] bir kayıt ifadesinin başlangıcını ve sonunu belirtir ve bir kayıttan alan değeri almak için kullanılır. Aşağıdaki örneklerde bir kayıt ve Öğe alanı değerinin nasıl alınacakları gösterilmektedir.
Aşağıda örnek bir kayıt verilmişti:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Bir Öğenin değerini almak için köşeli ayraçları olarak Source[Item]
kullanırsınız:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Tablo
Tablo, adlandırılmış sütunlar ve satırlar halinde düzenlenmiş bir değer kümesidir. Sütun türü örtük veya açık olabilir. sütun adlarının ve satır listesinin listesini oluşturmak için #table kullanabilirsiniz. Değerler tablosu, Listedeki Bir Liste'dir. { } küme ayracı karakterleri, tablodaki bir satırı dizin konumuna göre almak için de kullanılır (Örnek 3 - Dizin konumuna göre tablodan satır alma bölümüne gidin).
Örnek 1 - Örtük sütun türleriyle tablo oluşturma
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Örnek 2 - Açık sütun türleriyle tablo oluşturma
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source
Önceki örneklerin her ikisi de aşağıdaki şekilde bir tablo oluşturur:
OrderID | CustomerID | Kalem | Fiyat |
---|---|---|---|
1 | 1 | Olta | 100.00 |
2 | 1 | 1 lb. solucanlar | 5.00 |
Örnek 3 - Tablodan dizin konumuna göre satır alma
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source{1}
Bu ifade aşağıdaki kaydı döndürür:
Alan | Değer |
---|---|
OrderID | 2 |
CustomerID | 1 |
Kalem | 1 lb. solucanlar |
Price | 5 |
Ek yapılandırılmış veri örnekleri
Yapılandırılmış veriler herhangi bir M değeri içerebilir. Burada bazı örnekler verilmiştir:
Örnek 1 - [Temel Öğe](#_Primitive_value_1) değerleri, [İşlev](#_Function_value) ve [Kayıt](#_Record_value) içeren liste
let
Source =
{
1,
"Bob",
DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
Source
Bu ifadenin değerlendirilmesi şu şekilde görselleştirilebilir:
Örnek 2 - İlkel değerler ve iç içe kayıtlar içeren kayıt
let
Source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders =
{
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0]
}]
in
Source
Bu ifadenin değerlendirilmesi şu şekilde görselleştirilebilir:
Not
Birçok değer kelimenin tam anlamıyla ifade olarak yazılabilir, ancak bir değer bir ifade değildir. Örneğin, 1 ifadesi 1 değerini değerlendirir; 1+1 ifadesi 2 değerini değerlendirir. Bu ayrım incedir, ancak önemlidir. İfadeler değerlendirme için tariflerdir; değerler değerlendirmenin sonuçlarıdır.
If ifadesi
if ifadesi, mantıksal bir koşula göre iki ifade arasında seçim yapın. Örneğin:
if 2 > 1 then
2 + 2
else
1 + 1
Mantıksal ifade (2 1) doğruysa ilk ifade (2 + 2 > ) seçilir ve yanlışsa ikinci ifade (1 + 1) seçilir. Seçili ifade (bu durumda 2 + 2) değerlendirilir ve if ifadesinin sonucu olur (4).