แชร์ผ่าน


นิพจน์ ค่า และนิพจน์ 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)