Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Σύνταξη
Function.ScalarVector(scalarFunctionType as type, vectorFunction as function) as function
Περίπου
Επιστρέφει μια συνάρτηση με μονόμετρες τιμές τύπου scalarFunctionType που καλεί vectorFunction με μία μόνο γραμμή ορισμάτων και επιστρέφει τη μοναδική της έξοδο. Επιπλέον, όταν η συνάρτηση με ανυσματική τιμή εφαρμόζεται επανειλημμένα για κάθε γραμμή ενός πίνακα εισόδων, όπως σε Table.AddColumn, αντί για vectorFunction θα εφαρμοστεί μία φορά για όλες τις εισόδους.
vectorFunction θα διαβιβαστεί ένας πίνακας του οποίου οι στήλες συμφωνούν με το όνομα και τη θέση των παραμέτρων του scalarFunctionType. Κάθε γραμμή αυτού του πίνακα περιέχει τα ορίσματα για μία κλήση στη συνάρτηση ανυσματικής τιμής, με τις στήλες που αντιστοιχούν στις παραμέτρους του scalarFunctionType.
vectorFunction πρέπει να επιστρέψει μια λίστα με το ίδιο μήκος με τον πίνακα εισόδου, του οποίου το στοιχείο σε κάθε θέση πρέπει να είναι το ίδιο αποτέλεσμα με την αξιολόγηση της συνάρτησης με ανυσματική τιμή στη γραμμή εισόδου της ίδιας θέσης.
Ο πίνακας εισόδου αναμένεται να μεταδοθεί μέσω ροής, επομένως, vectorFunction αναμένεται να μεταδίδει μέσω ροής την έξοδό του καθώς εισάγεται η είσοδος, δουλεύοντας μόνο με ένα τμήμα εισόδου κάθε φορά. Ειδικότερα, η vectorFunction δεν πρέπει να απαριθμεί τον πίνακα εισόδου της περισσότερες από μία φορές.
Παράδειγμα 1
Πολλαπλασιάστε δύο στήλες του πίνακα εισόδου επεξεργάζοντας τις εισόδους σε παρτίδες των 100.
χρήσης
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
εξόδου
Table.FromRecords({
[a = 1, b = 2, Result = 2],
[a = 3, b = 4, Result = 12]
})
Παράδειγμα 2
Υπολογίστε τις βαθμολογίες των δοκιμών σε παρτίδες των δύο και συμπληρώστε ένα πεδίο αναγνωριστικού παρτίδας που μπορεί να χρησιμοποιηθεί για να επαληθεύσετε ότι η ομαδοποίηση λειτουργεί όπως αναμένεται.
χρήσης
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
εξόδου
#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}
}
)