นิพจน์ ค่า และนิพจน์ let
คิวรีของภาษาสูตร Power Query M ประกอบด้วยขั้นตอนนิพจน์สูตรที่สร้างคิวรีแบบผสมเข้าด้วยกัน สามารถประเมินนิพจน์สูตร (คํานวณ) ให้ส่งค่า กําหนด นิพจน์ จะย่อส่วนชุดของค่าที่จะคํานวณ ชื่อที่กําหนด และใช้ในนิพจน์ที่ตามมาที่อยู่ถัดจาก ในคําสั่ง ตัวอย่างเช่น กําหนดนิพจน์อาจประกอบด้วย ตัวแปรแหล่ง ที่เท่ากับค่าของ Text.Proper และให้ผลลัพธ์เป็นค่าข้อความในกรณีที่เหมาะสม
กําหนดนิพจน์
let
Source = Text.Proper("hello world")
in
Source
ในตัวอย่างข้างต้น Text.Proper("hello world")
จะถูกประเมินเป็น"Hello World"
ส่วนถัดไปจะอธิบายชนิดของค่าในภาษา
ค่าดั้งเดิม
ค่าแรกเริ่มเป็นค่าส่วนเดียว เช่น ตัวเลข ตรรกะ ข้อความ หรือ null ค่า null สามารถใช้เพื่อระบุการขาดหายไปของข้อมูลใด ๆ
ขนิด | ค่าตัวอย่าง |
---|---|
ไบนารี | 00 00 00 02 // จํานวนคะแนน (2) |
วันที่ | 5/23/2015 |
Datetime | 5/23/2015 12:00:00 น. |
โซนวันที่เวลา | 5/23/2015 12:00:00 น. -08:00 น. |
ระยะเวลา | 15:35:00 |
ตรรกะ | จริง และ เท็จ |
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" เช่น #"Today's data is: "
ต่อไปนี้คือระเบียนที่มีเขตข้อมูลที่ชื่อว่า "OrderID", "CustomerID", "Item" และ "Price" ที่มีค่า 1, 1, "Fishing rod" และ 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 lb. worms | 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}
นิพจน์นี้ส่งกลับระเบียนต่อไปนี้:
ฟิลด์ | มูลค่า |
---|---|
OrderID | 2 |
รหัสลูกค้า | 1 |
สินค้า | 1 lb. worms |
ราคา | 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 ถ้านิพจน์มีค่าเป็น 1 และจะประเมินเป็น 1 ถ้านิพจน์มีค่าเป็น 1 นิพจน์ 1+1 จะประเมินเป็นค่า 2 ความแตกต่างนี้จะละเอียดมาก แต่มีความสําคัญมาก นิพจน์เป็นสูตรสําหรับการประเมินผล ค่า คือผลลัพธ์ของการประเมิน
นิพจน์ ถ้า
นิพจน์ ถ้า จะเลือกระหว่างนิพจน์สองรายการโดยยึดตามเงื่อนไขตรรกะ ตัวอย่างเช่น:
if 2 > 1 then
2 + 2
else
1 + 1
นิพจน์แรก (2 + 2) จะถูกเลือก หากนิพจน์เชิงตรรกะ (2 > 1) เป็นจริง และนิพจน์ที่สอง (1 + 1) จะถูกเลือก หากเป็นเท็จ นิพจน์ที่เลือก (ในกรณีนี้ 2 + 2) จะได้รับการประเมิน และกลายเป็นผลลัพธ์ของ นิพจน์ ถ้า (4)