Παραστάσεις, τιμές και παράσταση Let
Ένα ερώτημα γλώσσας τύπων Power Query M αποτελείται από βήματα παράστασης τύπου που δημιουργούν ένα ερώτημα συνδυασμού δεδομένων. Μια παράσταση τύπου μπορεί να αξιολογηθεί (υπολογιστεί), αποδίδοντας μια τιμή. Η παράσταση let συμπυκνώνει ένα σύνολο τιμών που θα υπολογιστούν, θα τους εκχωρηθούν ονόματα και, στη συνέχεια, θα χρησιμοποιηθούν σε μια επόμενη παράσταση που ακολουθεί την πρόταση in . Για παράδειγμα, μια παράσταση let μπορεί να περιέχει μια προέλευσης μεταβλητή που ισούται με την τιμή του Text.Proper και αποδίδει μια τιμή κειμένου με την κατάλληλη περίπτωση.
Παράσταση Let
let
Source = Text.Proper("hello world")
in
Source
Στο παραπάνω παράδειγμα, Text.Proper("hello world")
το αξιολογείται σε "Hello World"
.
Οι επόμενες ενότητες περιγράφουν τους τύπους τιμών στη γλώσσα.
Τιμή Primitive
Μια τιμή primitive είναι μια μονομερής τιμή, όπως ένας αριθμός, λογική, κείμενο ή null. Μια τιμή null μπορεί να χρησιμοποιηθεί για να υποδείξει την απουσία οποιωνδήποτε δεδομένων.
Τύπος | Τιμή παραδείγματος |
---|---|
Δυαδικό | 00 00 00 02 // αριθμός σημείων (2) |
Ημερομηνία | 5/23/2015 |
DateTime | 23/5/2015 12:00:00 π.μ. |
Ζώνη ημερομηνίας/ώρας | 23/5/2015 12:00:00 π.μ. -08:00 |
Διάρκεια | 15:35:00 |
Λογικός | true και false |
Null | null |
Αριθμός | 0, 1, -1, 1.5 και 2,3e-5 |
Κείμενο | "abc" |
Ώρα | 12:34:12 ΜΜ |
Τιμή συνάρτησης
Η συνάρτηση είναι μια τιμή η οποία, όταν καλείται με ορίσματα, παράγει μια νέα τιμή. Οι συναρτήσεις συντάσσονται παραθέτοντας τις παραμέτρους της συνάρτησης μέσα σε παρένθεση, ακολουθούμενη από το σύμβολο =>, ακολουθούμενο από την παράσταση που ορίζει τη συνάρτηση. Για παράδειγμα, για να δημιουργήσετε μια συνάρτηση που ονομάζεται MyFunction που έχει δύο παραμέτρους και εκτελεί έναν υπολογισμό στην parameter1 και την parameter2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
Η κλήση της myFunction επιστρέφει το αποτέλεσμα:
let
Source = MyFunction(2, 4)
in
Source
Αυτός ο κώδικας παράγει την τιμή 3.
Δομημένες τιμές δεδομένων
Η γλώσσα M υποστηρίζει τις παρακάτω δομημένες τιμές δεδομένων:
Σημείωμα
Τα δομημένα δεδομένα μπορεί να περιέχουν οποιαδήποτε τιμή M. Για να δείτε μερικά παραδείγματα, μεταβείτε στα Πρόσθετα παραδείγματα δομημένων δεδομένων.
List
Η λίστα είναι μια ταξινομημένη ακολουθία τιμών που βασίζεται στο μηδέν, οι οποία περικλείονται σε χαρακτήρες άγκιστρας { }. Οι χαρακτήρες αγκίστρωσης { } χρησιμοποιούνται επίσης για την ανάκτηση ενός στοιχείου από μια λίστα κατά θέση ευρετηρίου. Για περισσότερες πληροφορίες, μεταβείτε στην ενότητα Τιμές λίστας.
Σημείωμα
Η Power Query M υποστηρίζει άπειρο μέγεθος λίστας, αλλά εάν μια λίστα έχει γραφτεί ως λεκτική σταθερά, η λίστα έχει σταθερό μήκος. Για παράδειγμα, η τιμή {1, 2, 3} έχει σταθερό μήκος 3.
Ακολουθούν ορισμένα παραδείγματα λίστας.
Τιμή | Τύπος |
---|---|
{123, true, "A"} | Λίστα που περιέχει έναν αριθμό, μια λογική τιμή και κείμενο. |
{1, 2, 3} | Λίστα αριθμών |
{ {1, 2, 3}, {4, 5, 6} } |
Λίστα λίστας αριθμών |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone = "987-6543"] } |
Λίστα εγγραφών |
{123, true, "A"}{0} | Λάβετε την τιμή του πρώτου στοιχείου σε μια λίστα. Αυτή η παράσταση επιστρέφει την τιμή 123. |
{ {1, 2, 3}, {4, 5, 6} }{0}{1} |
Λάβετε την τιμή του δεύτερου στοιχείου από το πρώτο στοιχείο λίστας. Αυτή η παράσταση επιστρέφει την τιμή 2. |
Εγγραφή
Μια εγγραφή είναι ένα σύνολο πεδίων. Ένα πεδίο είναι ένα ζεύγος ονόματος/τιμής, όπου το όνομα είναι μια τιμή κειμένου που είναι μοναδική μέσα στην εγγραφή του πεδίου. Η σύνταξη για τις τιμές εγγραφών επιτρέπει στα ονόματα να γράφονται χωρίς εισαγωγικά, μια φόρμα που αναφέρεται επίσης ως αναγνωριστικά. Ένα αναγνωριστικό μπορεί να λάβει τις ακόλουθες δύο μορφές:
identifier_name όπως το OrderID.
#"identifier name" όπως #"Τα σημερινά δεδομένα είναι: ".
Ακολουθεί μια εγγραφή που περιέχει πεδία με την ονομασία "OrderID", "CustomerID", "Item" και "Price" με τιμές 1, 1, "Καλάμι ψαρέματος" και 100,00. Οι χαρακτήρες αγκίστρι [ ] υποδηλώνουν την αρχή και το τέλος μιας παράστασης εγγραφής και χρησιμοποιούνται για τη λήψη μιας τιμής πεδίου από μια εγγραφή. Τα παρακάτω παραδείγματα δείχνουν μια εγγραφή και πώς μπορείτε να λάβετε την τιμή του πεδίου Στοιχείο.
Ακολουθεί ένα παράδειγμα εγγραφής:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
Για να λάβετε την τιμή ενός στοιχείου, χρησιμοποιείτε αγκύλες ως Source[Item]
:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Table
Ένας πίνακας είναι ένα σύνολο τιμών οργανωμένων σε επώνυμες στήλες και γραμμές. Ο τύπος στήλης μπορεί να είναι έμμεσος ή άμεσος. Μπορείτε να χρησιμοποιήσετε #table για να δημιουργήσετε μια λίστα ονομάτων στηλών και μια λίστα γραμμών. Ένας πίνακας τιμών είναι μια λίστα σε μια λίστα. Οι χαρακτήρες άγκιστρας { } χρησιμοποιούνται επίσης για την ανάκτηση μιας γραμμής από έναν Πίνακα κατά θέση ευρετηρίου (μεταβείτε στο Παράδειγμα 3 - Λήψη μιας γραμμής από έναν πίνακα κατά θέση ευρετηρίου).
Παράδειγμα 1 - Δημιουργία πίνακα με έμμεσους τύπους στηλών
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
Παράδειγμα 2 - Δημιουργία πίνακα με ρητούς τύπους στηλών
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
Και τα δύο προηγούμενα παραδείγματα δημιουργούν έναν πίνακα με το ακόλουθο σχήμα:
OrderID | CustomerID | Στοιχείο | Τιμή |
---|---|---|---|
1 | 1 | Καλάμι | 100.00 |
2 | 1 | 1 κιλό σκουλήκια | 5.00 |
Παράδειγμα 3 - Λήψη μιας γραμμής από έναν πίνακα κατά θέση ευρετηρίου
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}
Αυτή η παράσταση επιστρέφει την ακόλουθη εγγραφή:
Πεδίο | Τιμή |
---|---|
Αναγνωριστικό παραγγελίας | 2 |
Αναγνωριστικό πελάτη | 1 |
Στοιχείο | 1 κιλό σκουλήκια |
Τιμή | 5 |
Πρόσθετα παραδείγματα δομημένων δεδομένων
Τα δομημένα δεδομένα μπορεί να περιέχουν οποιαδήποτε τιμή M. Ακολουθούν μερικά παραδείγματα:
Παράδειγμα 1 - Λίστα με [Primitive](#_Primitive_value_1) τιμές, [Function](#_Function_value) και [Record](#_Record_value)
let
Source =
{
1,
"Bob",
DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
Source
Η αξιολόγηση αυτής της παράστασης μπορεί να απεικονιστεί ως:
Παράδειγμα 2 - Εγγραφή που περιέχει στοιχειώδεις τιμές και ένθετες εγγραφές
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
Η αξιολόγηση αυτής της παράστασης μπορεί να απεικονιστεί ως:
Σημείωμα
Παρόλο που πολλές τιμές μπορούν να εγγραφούν κυριολεκτικά ως παράσταση, μια τιμή δεν είναι παράσταση. Για παράδειγμα, η παράσταση 1 αποδίδει την τιμή 1, Η παράσταση 1+1 αποδίδει την τιμή 2. Αυτή η διάκριση είναι λεπτή, αλλά σημαντική. Οι παραστάσεις είναι συνταγές για αξιολόγηση. οι τιμές είναι τα αποτελέσματα της αξιολόγησης.
Παράσταση If
Η παράσταση if επιλέγει μεταξύ δύο παραστάσεων που βασίζονται σε μια λογική συνθήκη. Για παράδειγμα:
if 2 > 1 then
2 + 2
else
1 + 1
Η πρώτη παράσταση (2 + 2) επιλέγεται εάν η λογική παράσταση (2 > 1) είναι true και η δεύτερη παράσταση (1 + 1) είναι επιλεγμένη εάν είναι false. Η επιλεγμένη παράσταση (σε αυτή την περίπτωση 2 + 2) αξιολογείται και μετατρέπεται στο αποτέλεσμα της παράστασης if (4).