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.
Not
Microsoft Power Fx, tuval uygulamaları formül dilinin yeni adıdır. Microsoft tuval uygulamalarından dili ayıklar, diğer Microsoft Power Platform ürünleriyle tümleştirir ve açık kaynak olarak kullanılabilir hale getirirken bu makaleler devam etmektedir. Dilin tanıtımı için Microsoft Power Fx Genel Bakış makalesiyle başlayın.
Microsoft Power Fx tabloları verileri Microsoft Excel, SharePoint ve SQL Server gibi kaynaklardan gelen kayıtlar, alanlar ve sütunlar halinde düzenler. Tablo verilerine etkili bir şekilde erişen, bunları şekillendiren ve işleyen formüller yazmak için bu yapıları öğrenin.
- Kayıt bir kişi, yer veya nesne hakkında bir veya birden fazla bilgi kategorisi içerir. Örneğin, bir kayıtta tek bir müşterinin adı, e-posta adresi ve telefon numarası olabilir. Diğer araçlar kaydı "satır" veya "öğe" olarak adlandırır.
- Tablo, aynı bilgi kategorisine sahip bir veya daha fazla kayıt tutar. Örneğin, bir tabloda 50 müşterinin adı, e-posta adresi ve telefon numarası bulunabilir.
Excel'deki bir formülde bağımsız değişken olarak bir veya daha fazla hücre başvurusu kullanıldığı gibi, bağımsız değişken olarak tablo adı kullanan çeşitli formüller oluşturabilirsiniz. Power Fx'teki bazı formüller, belirttiğiniz diğer bağımsız değişkenleri yansıtan bir tablo döndürür. Örnek olarak aşağıdaki amaçlar için formül oluşturabilirsiniz:
- Patch işlevinin birden fazla bağımsız değişkeninden biri olacak şekilde belirterek bir tablodaki kayıtlardan birini güncelleştirme
- AddColumns, DropColumns veya RenameColumns işlevinin bağımsız değişkenlerinden biri olacak şekilde belirterek bir tabloda sütun ekleme, kaldırma ve yeniden adlandırma işlemlerini gerçekleştirme. Bu işlevlerin hiçbiri özgün tabloyu değiştirmez. Bunun yerine işlevler, belirttiğiniz diğer bağımsız değişkenleri temel alan farklı bir tablo döndürür.
Bir tablonun öğeleri
Kayıtlar
Her kayıtta bir kişi, yer veya nesne için en az bir bilgi kategorisi bulunur. Önceki örnekte her ürün için bir kayıt (Çikolata, Ekmek ve Su) ve her bilgi kategorisi için bir sütun (Fiyat, Eldeki Miktar ve Siparişte Miktar) gösterilmektedir.
Formülde küme ayracı kullanarak tablo bağlamının dışında bir kaydın kendisine başvurabilirsiniz. Örneğin, bu {Name: "Strawberries", Price: 7.99 } kaydı tabloyla ilişkili değildir. Bu örnekteki Ad ve Fiyat gibi alan adlarının çift tırnak işareti içinde olmadığını unutmayın.
Alanlar
Alan, bir kayıt içindeki her bir bilgi parçasıdır. Bu alan kavramını belirli bir kaydın sütun değeri olarak düşünebilirsiniz.
Denetimde olduğu gibi kayıtta da .işlecini kullanarak kayıt alanına başvurursunuz. Örneğin, First(Products).Name formülü Products tablosundaki ilk kaydın Name alanını döndürür.
GroupBy işleviyle ilgili örnekte gösterildiği gibi, bir alanda başka bir kayıt veya tablo bulunabilir. İstediğiniz sayıda kaydı ve tabloyu iç içe geçirebilirsiniz.
Sütunlar
Sütun, tablodaki bir veya daha fazla kaydın aynı alanını belirtir. Yukarıdaki örnekte, her ürünün bir fiyat alanı vardır ve bu fiyat tüm ürünler için aynı sütundadır. Yukarıdaki tabloda, üst kısımda yatay olarak gösterilen dört sütun vardır:
- Ad
- Fiyat
- Eldeki Miktar
- Siparişteki Miktar
Bir sütunun adı, ilgili sütundaki alanları yansıtır.
Bir sütundaki tüm değerler aynı veri türündedir. Yukarıdaki örnekte, "Eldeki Miktar" sütunu her zaman bir sayı içerir ve bir kayıt için "12 birim" gibi bir dize içeremez. Herhangi bir alanın değeri boş da olabilir.
Diğer araçlarda sütunları "alanlar" olarak ifade etmiş olabilirsiniz.
Tablo
Tablo, her biri tüm kayıtlarda aynı ada sahip birden fazla alan içeren bir veya daha fazla kayıttan oluşur.
Bir veri kaynağında veya koleksiyonda depolanan tüm tabloların bir adı vardır. Bu adı, söz konusu tabloya başvurmak ve bağımsız değişken olarak tablo kabul eden işlevlere geçirmek için kullanabilirsiniz. Tablolar bir işlevin veya formülün sonucu olarak da oluşturulabilir.
Aşağıdaki örnekte olduğu gibi, Table işlevini belirli kayıtlarla (küme ayraçları içinde) kullanarak bir tabloyu formül içinde ifade edebilirsiniz:
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
Köşeli ayraç kullanarak tek sütunlu bir tablo da tanımlayabilirsiniz. Yukarıdaki kodu şu şekilde de yazabilirsiniz:
[ "Strawberry", "Vanilla" ]
Tablo formülleri
Excel ve Power Fx uygulamalarında sayıları ve metin dizelerini işlemek için formülleri benzer şekillerde kullanırsınız:
- Excel'de A1 hücresine 42 değerini yazıp başka bir hücreye A1+2 formülünü girdiğinizde 44 değerini elde edersiniz.
- Power Apps'te ise Slider1 öğesinin Varsayılan özelliğini 42 olarak ayarlayıp bir etiketin Metin özelliğini Slider1.Value + 2 olarak belirlediğinizde 44 değerini elde edersiniz.
Her iki durumda da bağımsız değişkenlerin değerini (örneğin, A1 hücresindeki sayıyı veya Slider1 değerini) değiştirdiğinizde, hesaplanan değer otomatik olarak değiştirilir.
Benzer şekilde, formülleri kullanarak tablo ve kayıtlardaki verilere erişebilir ve bu verileri işleyebilirsiniz. Bazı formüllerde tablo adlarını bağımsız değişken olarak kullanabilirsiniz. Örneğin, Min(Catalog, Price) gibi bir formülle Catalog tablosunun Price sütunundaki en düşük değeri gösterebilirsiniz. Bazı formüller ise değer olarak tablonun tamamını döndürür. Örneğin, RenameColumns(Catalog, "Price", "Cost") gibi bir formülle Catalog tablosundaki tüm kayıtlar döndürülür ancak Price sütununun adı Cost olarak değiştirilir.
Sayılar gibi, tablo ve kayıt içeren formüller de temel alınan tablo veya kayıt değiştiğinde otomatik olarak yeniden hesaplanır. Catalog tablosundaki bir ürünün maliyeti önceki minimum değerin altına düşerse Min formülünün değeri bu değişikliği yansıtacak şekilde otomatik olarak değiştirilir.
Tablo işlevleri ve denetim özellikleri
Lower işlevini kullanmayı düşünün. Hoş geldiniz değişkeninin "Hello, World" metin dizesini içermesi durumunda , Lower (welcome)"hello, world" sonucunu verir. Bu işlev bu değişkendeki değeri değiştirmez. Lower, yalnızca girişi işleyen ve çıktıyı üreten saf bir işlevdir. Hepsi bu kadar; yan etkileri yoktur. Excel'deki tüm işlevler ve Power Fx'teki çoğu işlev, çalışma kitabı veya uygulamanın otomatik olarak yeniden hesaplanmasını sağlayan saf işlevlerdir.
Power Fx, tablolarda aynı şekilde çalışan bir dizi işlev sunar. Bu işlevler tabloları giriş olarak alır ve tüm veri tablolarını filtreler, sıralar, dönüştürür, küçültür ve özetler. Aslında, Lower ve tek bir değeri alan diğer birçok işlev giriş olarak tek sütunlu bir tabloyu da alabilir.
Birçok işlev, giriş olarak tek sütunlu bir tablo alır. Tüm tabloda tek bir sütun varsa, bunu adıyla belirtebilirsiniz. Bir tablonun birden çok sütunu varsa, Table.Column sözdizimini kullanarak bu sütunlardan birini belirtebilirsiniz. Örneğin, Products.NameÜrünler tablosundan yalnızca Ad değerlerinin tek sütunlu tablosunu verir .
Bir tabloyu istediğiniz gibi yeniden şekillendirebilirsiniz. Bunun için şu işlevleri kullanırsınız: AddColumns, RenameColumns, ShowColumns veya DropColumns. Bu işlevler yalnızca çıkışı değiştirir, kaynaklarını değil.
Davranış formülleri
Diğer işlevler özellikle verileri değiştirmek ve yan etkileri sağlamak için tasarlanmıştır. Bu işlevler saf olmadığından, bunları dikkatlice oluşturmalısınız; bu işlevler uygulamadaki değerleri otomatik olarak yeniden hesaplayarak katılamaz. Bu işlevleri yalnızca davranış formülleri içinde kullanabilirsiniz.
Kayıt kapsamı
Bazı işlevler, bir tablonun tüm kayıtlarında bir formülü bir kerede bir kayıt olarak değerlendirerek çalışır. Formülün sonucu farklı şekillerde kullanılır:
- AddColumns - Formül, yeni sütun için değer sağlar.
- Ortalama, Maks, Min, Toplam, StdevP, VarP: Formül, toplanacak değeri sağlar.
- Filter, Lookup: Formül, kaydın çıkışa dahil edilip edilmeyeceğini belirler.
- Bitiştir: Formül, birleştirilecek dizeleri belirler.
- Ayrı: Formül, yinelenen kayıtların tanımlanması için kullanılacak bir değer döndürür.
- ForAll: Formül, yan etkileri olabilecek herhangi bir değer döndürebilir.
- Sırala: Formül, kayıtların sıralanacağı değeri sağlar.
- İle: Formül, yan etkileri olabilecek herhangi bir değer döndürebilir.
Bu formüllerin içinde, işlenen kaydın belirli alanlarına başvurabilirsiniz. Bu işlevlerin her biri formülün değerlendirildiği bir "kayıt kapsamı" oluşturur ve kaydın alanları üst düzey tanımlayıcı olarak kullanılabilir. Ayrıca uygulamanız içinden denetim özelliklerine ve diğer değerlere başvuruda bulunabilirsiniz.
Örneğin, genel değişkene yerleştirilmiş Ürünler tablosunu alın:
Set( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
Bu ürünlerden herhangi birinin kullanılabilir olandan daha fazla isteği olup olmadığını belirlemek için:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Filter işlevinin ilk bağımsız değişkeni, üzerinde çalışılacak kayıt tablosu; ikinci bağımsız değişkeni ise bir formüldür. Filter işlevi bu formülü değerlendirmek için her bir kayda ait alanların yer aldığı bir kayıt kapsamı oluşturur. Bu örnekte Ürün, İstenen Miktar ve Kullanılabilir Miktar alanları kullanılmıştır. Karşılaştırma işleminin sonucu her bir kaydın işlev sonucuna dahil edilip edilmeyeceğini belirler:
Bu örne ekleyerek, her ürünün ne kadarının sipariş edilebileceğini hesaplayabilirsiniz:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
Burada sonuza bir hesaplanmış sütun eklersiniz. AddColumns'un istenen ile kullanılabilir olan arasındaki farkı hesaplamak için kullandığı kendi kayıt kapsamı vardır.
Son olarak, sonuç tablosunu yalnızca istediğiniz sütunlara küçültebilirsiniz:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Yukarıdaki örneklerde, bazı yerlerde çift tırnak (") ve diğer yerlerde tek tırnak (') kullandığınızı unutmayın. Nesnenin adı boşluk içeriyorsa, bir nesnenin değerine başvururken (alan veya tablo gibi) tek tırnak işareti gerekir. AddColumns örneğinde olduğu gibi, özellikle nesnenin henüz mevcut olmadığı durumlarda, bir nesnenin değerine başvurmadığınız, bunun yerine bu konuda konuştuğunuzda çift tırnak kullanın.
Kesinleştirme
Kayıt kapsamıyla eklediğiniz alan adları, uygulamanın başka bir yerinden aynı adları geçersiz kılar. Bu geçersiz kılma gerçekleştiğinde, kesinleştirme işlecini kullanarak kayıt kapsamının dışından değerlere erişmeye @ devam edebilirsiniz:
- İç içe kayıt kapsamlarından değerlere erişmek için, şu deseni @ izleyerek üzerinde çalıştığınız tablonun adıyla işlecini kullanın:
Table[@FieldName] - Veri kaynakları, koleksiyonlar ve bağlam değişkenleri gibi genel değerlere erişmek için [@ObjectName] desenini (tablo gösterimi olmadan) kullanın.
Üzerinde çalıştığınız tablo Filter(Table, ... gibi bir ifadeyse ), kesinleştirme işlecini kullanamazsınız. Yalnızca en içteki kayıt kapsamı, kesinleştirme işlecini kullanmayarak bu tablo ifadesinden alanlara erişebilir.
Örneğin, bir X koleksiyonunuz olduğunu düşünün:
Bu koleksiyonu ClearCollect( X, [1, 2] ) kullanarak oluşturabilirsiniz.
Y adlı bir formül ekleyelim:
Bu koleksiyonu, ClearCollect( Y, ["A", "B"] ) kullanarak oluşturabilirsiniz.
Ek olarak şu formülle Değer adlı bir bağlam değişkeni tanımlayabilirsiniz: UpdateContext( {Değer: "!"} )
Şimdi parçaları bir araya getirelim. Bu bağlamda şu formül:
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
şu tabloyu oluşturur:
Neler oluyor burada? En dıştaki ForAll işlevi X için bir kayıt kapsamı tanımlar, böylece her kaydın Value alanına işlem yaparken erişebilirsiniz. Buna yalnızca Değer sözcüğünü kullanarak veya X[@Value] kullanarak erişebilirsiniz.
En içteki ForAll işlevi Y için başka bir kayıt kapsamı tanımlar. Bu tabloda da tanımlanmış bir Değer alanı olduğundan, buradaki Değer kullanıldığında Y'nin kaydındaki alana başvurur ve artık X'ten gelen alan değildir. X'inDeğer alanına erişmek için, kesinleştirme işleciyle daha uzun sürümü kullanmanız gerekir.
En içteki kayıt kapsamı Y olduğundan, bu tablonun alanlarına erişmek için kesinleştirme gerekmez, bu nedenle bu formülü aynı sonuçla kullanabilirsiniz:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
ForAll kayıt kapsamlarının tümü genel kapsamı geçersiz kılar. Tanımladığınız Değer bağlam değişkeni, ayırt etme işleci olmadan adıyla kullanılamaz. Bu değere erişmek için [@Değer] kullanın.
İç içe olan ForAll işlevleri sonucunda, sonuç tablosu da iç içe geçmiş olacağından Ungroup işlevi sonucu düz hale getirir.
Tek sütunlu tablolar
Bir tablodan tek bir sütun üzerinde çalışmak için, bu örnekte olduğu gibi ShowColumns işlevini kullanın:
ShowColumns( Products, "Product" )
Bu formül tek sütunlu tablo oluşturur:
Daha kısa bir alternatif için, Tablo'dan yalnızca Sütun'un tek sütunlu tablosunu çıkaran Table.Column öğesini belirtin. Örneğin, bu formül ShowColumns kullanarak tam olarak aynı sonucu oluşturur.
Products.Product
Satır içi kayıtlar
Kayıtları ifade etmek için, adlandırılmış alan değerlerini içeren küme ayraçları kullanabilirsiniz. Örneğin, bu konu başlığının ilk kısmındaki tablonun ilk kaydını şu formülle ifade edebilirsiniz:
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
Şu örnekte gösterilen şekilde, formülleri başka formüllerin içine de ekleyebilirsiniz:
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
Şu örnekte gösterilen şekilde, küme ayraçlarını iç içe kullanarak kayıtları iç içe geçirebilirsiniz:
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
Boşluk veya iki nokta üst üste gibi özel karakter içeren sütun adlarını tek tırnak içine almanız gerekir. Sütun adlarında iki adet tek tırnak kullanın.
Fiyat sütunundaki değerin, dolar işareti gibi bir para birimi simgesi içermediğine dikkat edin. Bu biçimlendirme, değer görüntülendiğinde uygulanır.
Satır içi tablolar
Table işlevini ve bir kayıt kümesini kullanarak tablo oluşturabilirsiniz. Bu konu başlığının ilk kısmındaki tabloyu şu formülle ifade edebilirsiniz:
Table(
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
{ Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
{ Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 }
)
Tabloları iç içe de geçirebilirsiniz:
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
Satır içi değer tabloları
Değerleri köşeli ayraçların içine yerleştirerek tek sütunlu tablolar oluşturabilirsiniz. Sonuç tablosunda Değer adlı tek bir sütun bulunur.
Örneğin, [ 1, 2, 3, 4 ]Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) ile eşdeğerdir ve bu tabloyu döndürür: