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.
Sözdizimi
Function.ScalarVector(scalarFunctionType as type, vectorFunction as function) as function
Hakkında
Tek bir bağımsız değişken satırıyla scalarFunctionType çağıran ve tek çıkışını döndüren vectorFunction türünde bir skaler işlev döndürür. Buna ek olarak, skaler işlev Table.AddColumngibi bir giriş tablosunun her satırı için tekrar tekrar uygulandığında, vectorFunction tüm girişler için bir kez uygulanır.
vectorFunction'a, sütunları ad ve konum bakımından scalarFunctionTypeparametrelerine uygun bir tablo aktarılacaktır. Bu tablonun her satırı, scalarFunctionTypeparametrelerine karşılık gelen sütunlarla beraber skaler işleve yapılan bir çağrının argümanlarını içerir.
vectorFunction giriş tablosuyla aynı uzunlukta bir liste döndürmelidir ve her konumdaki öğe aynı konumdaki giriş satırındaki skaler işlevin değerlendirilmesi ile aynı sonuç olmalıdır.
Giriş tablosunun akış hâlinde olması beklenir, bu nedenle vectorFunction, giriş geldikçe çıktısını akış hâlinde sağlaması ve aynı anda yalnızca bir giriş öbeğiyle çalışması beklenir. Özellikle, vectorFunction giriş tablosunu birden çok kez listelememelidir.
Örnek 1
Girdi tablosunun iki sütununu, girişleri 100'lük gruplar halinde işleyerek çarpın.
Kullanım
let
Compute.ScoreScalar = (left, right) => left * right,
// When Function.ScalarVector batching kicks in, we'll receive all
// of the inputs for the entire table here at once.
Compute.ScoreVector = (input) => let
chunks = Table.Split(input, 100),
scoreChunk = (chunk) => Table.TransformRows(chunk, each Compute.ScoreScalar([left], [right]))
in
List.Combine(List.Transform(chunks, scoreChunk)),
Compute.Score = Function.ScalarVector(
type function (left as number, right as number) as number,
Compute.ScoreVector
),
Final = Table.AddColumn(
Table.FromRecords({
[a = 1, b = 2],
[a = 3, b = 4]
}),
"Result",
each Compute.Score([a], [b])
)
in
Final
Çıkış
Table.FromRecords({
[a = 1, b = 2, Result = 2],
[a = 3, b = 4, Result = 12]
})
Örnek 2
Test puanlarını ikişerli gruplar halinde hesaplayın ve toplulaştırmanın beklendiği gibi çalıştığını doğrulamak için kullanılabilecek bir toplu kimlik alanını doldurun.
Kullanım
let
_GradeTest = (right, total) => Number.Round(right / total, 2),
_GradeTests = (inputs as table) as list => let
batches = Table.Split(inputs, 2),
gradeBatch = (batch as table) as list =>
let
batchId = Text.NewGuid()
in
Table.TransformRows(batch, each [Grade = _GradeTest([right], [total]), BatchId = batchId])
in
List.Combine(List.Transform(batches, gradeBatch)),
GradeTest = Function.ScalarVector(type function (right as number, total as number) as number, _GradeTests),
Tests = #table(type table [Test Name = text, Right = number, Total = number],
{
{"Quiz 1", 3, 4},
{"Test 1", 17, 22},
{"Quiz 2", 10, 10}
}),
// To break batching, replace [Right] with {[Right]}{0}.
TestsWithGrades = Table.AddColumn(Tests, "Grade Info", each GradeTest([Right], [Total]), type record),
// To verify batching, also expand BatchId.
Final = Table.ExpandRecordColumn(TestsWithGrades, "Grade Info", {"Grade"})
in
Final
Çıkış
#table(
type table [Test Name = text, Right = number, Total = number, Grade = number],
{
{"Quiz 1", 3, 4, 0.75},
{"Test 1", 17, 22, 0.77},
{"Quiz 2", 10, 10, 1}
}
)