ทำความเข้าใจตารางและเรกคอร์ดในแอปพื้นที่ทำงาน
ใน Power Apps คุณสามารถสร้างแอปพื้นที่ทำงานที่เข้าถึงข้อมูลใน Microsoft Excel SharePoint SQL Server และแหล่งข้อมูลอื่น ๆ ที่จัดเก็บข้อมูลในเรกคอร์ดและตาราง เมื่อต้องการทำงานอย่างมีประสิทธิภาพกับข้อมูลประเภทนี้ ให้ทบทวนหลักการที่เกี่ยวข้องกับโครงสร้างเหล่านี้
- เรกคอร์ดมีหมวดหมู่ข้อมูลเกี่ยวกับบุคคล สถานที่ หรือสิ่งของอย่างน้อยหนึ่งหมวดหมู่ ตัวอย่างเช่น เรกคอร์ดอาจมีชื่อ ที่อยู่อีเมล และหมายเลขโทรศัพท์ของลูกค้าหนึ่งราย เครื่องมืออื่น ๆ จะอ้างถึงเรกคอร์ดเป็น "แถว" หรือ "รายการ"
- ตารางจะเก็บเรกคอร์ดอย่างน้อยหนึ่งเรกคอร์ดที่มีข้อมูลประเภทเดียวกัน ตัวอย่างเช่น ตารางอาจมีชื่อ ที่อยู่อีเมล และหมายเลขโทรศัพท์ของลูกค้า 50 คน
ในแอปของคุณ คุณจะใช้ สูตร ในการสร้าง อัปเดต และจัดการเรกคอร์ดและตาราง คุณอาจอ่านและเขียนข้อมูลไปยัง แหล่งข้อมูล ภายนอก ซึ่งเป็นตารางแบบขยาย นอกจากนี้ คุณอาจสร้างตารางภายในอย่างน้อยหนึ่งตาราง ซึ่งเรียกว่า คอลเลกชัน
คุณสามารถสร้างสูตรต่าง ๆ ที่ใช้ชื่อของตารางเป็นอาร์กิวเมนต์ เช่นเดียวกับสูตรใน Excel ที่ใช้การอ้างอิงเซลล์อย่างน้อยหนึ่งเซลล์เป็นอาร์กิวเมนต์ บางสูตรใน Power Apps จะคืนค่าตารางที่แสดงอาร์กิวเมนต์อื่น ๆ ที่คุณระบุ ตัวอย่างเช่น คุณอาจสร้างสูตร:
- เพื่ออัปเดตเรกคอร์ดในตารางโดยระบุให้ตารางนั้นเป็นหนึ่งในหลายอาร์กิวเมนต์สำหรับฟังก์ชัน Patch
- เมื่อต้องการเพิ่ม ลบ และตั้งชื่อคอลัมน์ใหม่ในตารางโดยระบุให้ตารางเป็นอาร์กิวเมนต์สำหรับฟังก์ชัน AddColumns, DropColumns หรือ RenameColumns ฟังก์ชันเหล่านั้นจะไม่ปรับเปลี่ยนตารางต้นฉบับ แต่ฟังก์ชันจะคืนค่าตารางอื่นตามอาร์กิวเมนต์อื่น ๆ ที่คุณระบุแทน
องค์ประกอบของตาราง
เรกคอร์ด
แต่ละเรกคอร์ดประกอบด้วยข้อมูลของบุคคล สถานที่ หรือสิ่งของ อย่างน้อยหนึ่งประเภท ตัวอย่างด้านบนแสดงเรกคอร์ดสำหรับแต่ละผลิตภัณฑ์ (ช็อกโกแลต ขนมปัง และ น้ำ) และคอลัมน์สำหรับข้อมูลแต่ละประเภท (ราคา ปริมาณที่ถือครอง และ ปริมาณที่สั่งซื้อ)
ในสูตร คุณสามารถอ้างถึงเรกคอร์ดได้โดยไม่ต้องอยู่ในบริบทของตาราง โดยใช้วงเล็บปีกกา ยกตัวอย่างเช่น เรกคอร์ดนี้ { ชื่อ: "สตรอเบอรี่", ราคา: 7.99 } ไม่ได้เกี่ยวข้องกับตาราง โปรดทราบว่าชื่อฟิลด์ เช่น ชื่อ และ ราคา ในตัวอย่างนั้น ไม่ได้อยู่ภายในเครื่องหมายอัญประกาศ
ฟิลด์
ฟิลด์คือชิ้นส่วนของข้อมูลหนึ่งในเรกคอร์ด คุณสามารถมองภาพหมวดหมู่ของฟิลด์นี้เป็นในคอลัมน์สำหรับเรกคอร์ดนี้โดยเฉพาะ
เช่นเดียวกับตัวควบคุม คุณอ้างถึงฟิลด์ของเรกคอร์ดโดยใช้ . ซึ่งเป็น ตัวดำเนินการ บนเรกคอร์ด ตัวอย่างเช่น First(Products).Name จะคืนค่าฟิลด์ ชื่อ ของเรกคอร์ดแรกในตาราง ผลิตภัณฑ์
ฟิลด์สามารถมีเรกคอร์ดหรือตารางอื่น เช่นเดียวกับที่ตัวอย่างของฟังก์ชัน GroupBy แสดงให้เห็น คุณสามารถซ้อนเรกคอร์ดและตารางได้มากเท่าที่ต้องการ
คอลัมน์
คอลัมน์อ้างถึงฟิลด์เดียวกันสำหรับหนึ่งเรกคอร์ดเป็นอย่างต่ำในตาราง ในตัวอย่างข้างต้น แต่ละผลิตภัณฑ์มีฟิลด์ราคา และราคานั้นอยู่ในคอลัมน์เดียวกันสำหรับผลิตภัณฑ์ทั้งหมด ตารางด้านบนมีสี่คอลัมน์ แสดงตามแนวนอนด้านบน:
- ชื่อ
- ราคา
- ปริมาณที่ถือครอง
- ปริมาณในใบสั่ง
ชื่อคอลัมน์แสดงถึงข้อมูลในคอลัมน์
ค่าทั้งหมดภายในคอลัมน์เป็นข้อมูลชนิดเดียวกัน ในตัวอย่างข้างต้น คอลัมน์ "ปริมาณที่ถือครอง" มีตัวเลขอยู่เสมอและไม่สามารถมีสตริง เช่น "12 หน่วย" สำหรับเรกคอร์ดหนึ่ง ๆ ได้ ค่าของฟิลด์อาจ ว่างเปล่า
คุณอาจเรียกคอลัมน์เป็น "ฟิลด์" ในเครื่องมืออื่น
หมายเหตุ
สำหรับแหล่งข้อมูล เช่น ไทล์ SharePoint, Excel, หรือ Power BI ที่มีชื่อคอลัมน์ที่มีช่องว่าง Power Apps จะแทนที่ช่องว่างด้วย "_x0020_" ตัวอย่างเช่น "ชื่อคอลัมน์" ในไทล์ SharePoint, Excel หรือ Power BI จะแสดงเป็น "Column_x0020_Name" ใน Power Apps เมื่อแสดงในเค้าโครงข้อมูลหรือใช้ในสูตร
Table
ตารางมีอย่างน้อยหนึ่งเรกคอร์ด โดยแต่ละเรกคอร์ดมีหลายฟิลด์ที่มีชื่อที่สอดคล้องกันกับทุกเรกคอร์ด
ตารางใด ๆ ที่ถูกเก็บไว้ในแหล่งข้อมูลหรือคอลเลกชันที่มีชื่อ ซึ่งคุณใช้เพื่ออ้างถึงตารางและส่งผ่านไปยังฟังก์ชันที่นับตารางเป็นอาร์กิวเมนต์ ตารางยังสามารถเป็นผลลัพธ์ของฟังก์ชันหรือสูตร
เช่นเดียวกับตัวอย่างต่อไปนี้ คุณสามารถแสดงตารางในสูตรได้โดยใช้ฟังก์ชัน Table กับชุดของเรกคอร์ดซึ่งคุณระบุในวงเล็บปีกกา
Table( { Value: "Strawberry" }, { Value: "Vanilla" } )
คุณยังสามารถกำหนดตารางแบบคอลัมน์เดียวด้วยวงเล็บเหลี่ยมได้ วิธีเขียนที่ให้ผลลัพธ์เดียวกับวิธีทางด้านบน:
[ "Strawberry", "Vanilla" ]
สูตรของตาราง
ใน Excel และ Power Apps คุณใช้สูตรเพื่อจัดการตัวเลขและสตริงข้อความด้วยวิธีที่คล้ายกัน:
- ใน Excel กรอกค่า เช่น 42 ในเซลล์ A1 จากนั้นพิมพ์สูตรเช่น A1+2 ในเซลล์อื่นเพื่อแสดงค่าของ 44
- ใน Power Apps ตั้งค่าคุณสมบัติ Default ของ Slider1 เป็น 42 และตั้งค่าคุณสมบัติ ข้อความ ของป้ายชื่อเป็น Slider1.Value + 2 เพื่อแสดงค่า 44
ในทั้งสองกรณี ค่าที่คำนวณจะเปลี่ยนแปลงโดยอัตโนมัติถ้าคุณเปลี่ยนค่าของอาร์กิวเมนต์ (ตัวอย่างเช่น ตัวเลขในเซลล์ A1 หรือค่าของ Slider1)
ในทำนองเดียวกัน คุณสามารถใช้สูตรเพื่อเข้าถึงและจัดการกับข้อมูลในตารางและเรกคอร์ดได้ คุณสามารถใช้ชื่อของตารางเป็นอาร์กิวเมนต์ในสูตรบางสูตร เช่น Min(แค็ตตาล็อก, ราคา) เพื่อแสดงค่าต่ำสุดในคอลัมน์ ราคา ของตาราง แค็ตตาล็อก สูตรอื่น ๆ จะคืนค่าทั้งตาราง เช่น RenameColumns(แค็ตตาล็อก, "ราคา", "ต้นทุน") ซึ่งส่งกลับเรกคอร์ดทั้งหมดจากตาราง แค็ตตาล็อก แต่เปลี่ยนชื่อของคอลัมน์ ราคา เป็น ต้นทุน
เช่นเดียวกับตัวเลข สูตรที่เกี่ยวข้องกับตารางและเรกคอร์ดจะถูกคำนวณใหม่โดยอัตโนมัติเป็นตารางเบื้องต้นหรือการเปลี่ยนแปลงของเรกคอร์ด ถ้าต้นทุนของผลิตภัณฑ์ในตาราง แค็ตตาล็อก ถูกลดลงต่ำกว่าค่าต่ำสุดเดิม ค่าที่ส่งกลับของสูตร Min จะถูกเปลี่ยนแปลงให้เข้ากันโดยอัตโนมัติ
ลองทำตามตัวอย่างง่าย ๆ
สร้างแอปว่างสำหรับโทรศัพท์ และเพิ่มตัวควบคุม แกลเลอรี แนวตั้งที่ประกอบด้วยการควบคุมอื่น ๆ
ตามค่าเริ่มต้น หน้าจอจะแสดงตัวแทนข้อความจากตารางที่ชื่อ CustomGallerySample คุณสมบัติ รายการ ของตัวควบคุม แกลเลอรี ของหน้าจอจะถูกตั้งค่าให้แก่ตารางดังกล่าวโดยอัตโนมัติ
หมายเหตุ
ตัวควบคุมบางตัวถูกจัดวางใหม่และขยายเพื่อจุดประสงค์ด้านการแสดงภาพประกอบ
แทนที่จะตั้งค่าคุณสมบัติ รายการ เป็นชื่อของตาราง ตั้งเป็นสูตรที่รวมชื่อของตารางเป็นอาร์กิวเมนต์ ดังตัวอย่างต่อไปนี้:
Sort(CustomGallerySample, SampleHeading, SortOrder.Descending)
สูตรนี้ใช้ฟังก์ชัน Sort ซึ่งนำชื่อของตารางมาเป็นอาร์กิวเมนต์แรก และชื่อของคอลัมน์ในตารางนั้นเป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันนี้ยังสนับสนุนอาร์กิวเมนต์ที่สามเป็นทางเลือกเพิ่มเติม ซึ่งระบุว่าคุณต้องการจัดเรียงข้อมูลตามลำดับมากไปน้อย
ตั้งค่าคุณสมบัติ รายการ เป็นสูตรที่นำสูตรจากขั้นตอนที่แล้วมาเป็นอาร์กิวเมนต์และส่งกลับตาราง ดังตัวอย่างต่อไปนี้:
FirstN(Sort(CustomGallerySample, SampleHeading, SortOrder.Descending), 2)
ในสูตรนี้ คุณใช้ฟังก์ชัน FirstN เพื่อแสดงจำนวนของเรกคอร์ดที่เฉพาะเจาะจงในตาราง คุณใช้ฟังก์ชัน Sort เป็นอาร์กิวเมนต์แรกกับ FirstN และตัวเลข (ในกรณีนี้คือ 2) เป็นอาร์กิวเมนต์ที่สอง ซึ่งระบุจำนวนเรกคอร์ดที่จะแสดง
ทั้งสูตรส่งกลับตารางที่มีสองเรกคอร์ดแรกของตาราง CustomGallerySample และจัดเรียงตามคอลัมน์ SampleHeading ในลำดับจากมากไปน้อย
คุณสมบัติฟังก์ชันตารางและตัวควบคุม
พิจารณาฟังก์ชัน Lower หากตัวแปร welcome มีสตริงข้อความ "Hello, World" สูตร Lower(welcome) คืนค่า "hello, world" ฟังก์ชันนี้จะไม่เปลี่ยนค่าในตัวแปรนั้น แต่อย่างใด Lower เป็นฟังก์ชั่นบริสุทธิ์เนื่องจากประมวลผลอินพุต และสร้างเอาต์พุตเท่านั้น แค่นั้น; ไม่มีผลข้างเคียง ฟังก์ชั่นทั้งหมดใน Excel และฟังก์ชั่นส่วนใหญ่ใน Power Apps เป็นฟังก์ชั่นบริสุทธิ์ซึ่งช่วยให้คำนวณหรือคำนวณเวิร์กบุ๊กหรือแอปโดยอัตโนมัติ
Power Apps มอบชุดของฟังก์ชั่นที่ทำงานบนตารางในลักษณะเดียวกัน ฟังก์ชั่นเหล่านี้ใช้ตารางเป็นอินพุตและกรอง เรียงลำดับ เปลี่ยน ลด และสรุปตารางข้อมูลทั้งหมด ในความเป็นจริง Lower และฟังก์ชั่นอื่น ๆ อีกมากมายที่มักจะรับค่าเดียวยังสามารถใช้ตารางคอลัมน์เดียวเป็นอินพุต
- Sort Filter - จัดเรียงและกรองเรกคอร์ด
- FirstN LastN - คืนค่า N เรกคอร์ดแรกหรือ N เรกคอร์ดสุดท้ายของตาราง
- Abs Sqrt Round RoundUp RoundDown - ตัวดำเนินการทางคณิตศาสตร์ของแต่ละเรกคอร์ดของตารางแบบคอลัมน์เดียว แสดงผลเป็นตารางแบบคอลัมน์เดียวของผลลัพธ์
- Left Mid Right Replace Substitute Trim Lower Upper Proper - การจัดการสตริงของแต่ละเรกคอร์ดของตารางแบบคอลัมน์เดียว แสดงผลเป็นตารางแบบคอลัมน์เดียวของสตริง
- Len - สำหรับคอลัมน์ของสตริง ส่งกลับตารางแบบคอลัมน์เดียวที่มีความยาวของแต่ละสตริง
- Concatenate - เชื่อมหลายคอลัมน์ของสตริงเข้าด้วยกัน แสดงผลเป็นตารางแบบคอลัมน์เดียวของสตริง
- AddColumns DropColumns RenameColumns ShowColumns - การจัดการคอลัมน์ของตาราง แสดงผลเป็นตารางใหม่ที่มีคอลัมน์ที่แตกต่างกัน
- Distinct – เอาเรกคอร์ดที่ซ้ำกันออก
- Shuffle – จัดเรียงเรกคอร์ดแบบสุ่ม
- HashTags – ค้นหาแฮชแท็กในสตริง
- Errors - แสดงข้อมูลของข้อผิดพลาดเมื่อคุณทำงานกับแหล่งข้อมูล
ฟังก์ชันเหล่านี้จำนวนมากใช้ตารางคอลัมน์เดียวเป็นอินพุต หากทั้งตารางมีเพียงหนึ่งคอลัมน์ คุณสามารถระบุได้ตามชื่อ หากตารางมีหลายคอลัมน์ คุณสามารถระบุหนึ่งในคอลัมน์เหล่านั้นโดยใช้ไวยากรณ์ Table.Column ตัวอย่างเช่น Products.Name คืนค่าตารางคอลัมน์เดียวที่มีเพียงค่า ชื่อ จากตาราง ผลิตภัณฑ์
คุณสามารถปรับแต่งตารางใหม่ได้อย่างสมบูรณ์ ตามที่คุณต้องการโดยใช้ฟังก์ชัน AddColumns RenameColumns ShowColumns หรือ DropColumns ฟังก์ชั่นเหล่านี้จะเปลี่ยนเฉพาะเอาต์พุต ไม่ใช่ข้อมูลหลัก
คุณสมบัติของตัวควบคุมสามารถเป็นตารางได้:
- รายการ – นำไปใช้กับแกลเลอรี กล่องรายการ และกล่องคำสั่งผสม คุณสมบัตินี้กำหนดตารางที่แกลเลอรีหรือรายการแสดง
- SelectedItems – นำไปใช้กับกล่องรายการ และกล่องคำสั่งผสม คุณสมบัตินี้กำหนดตารางรายการที่ผู้ใช้เลือกถ้า SelectMultiple เปิดใช้งาน
สูตรแบบพฤติกรรม
ฟังก์ชั่นอื่น ๆ ได้รับการออกแบบมาโดยเฉพาะเพื่อแก้ไขข้อมูลและมีผลข้างเคียง เนื่องจากฟังก์ชั่นเหล่านี้ไม่บริสุทธิ์ คุณต้องสร้างอย่างระมัดระวัง และไม่ใช้ในในการคำนวณค่าในแอปโดยอัตโนมัติ คุณสามารถใช้ฟังก์ชันเหล่านี้ภายใน สูตรแบบพฤติกรรม เท่านั้น
- Collect, Clear, ClearCollect - สร้าง ล้าง และเพิ่มข้อมูลลงในคอลเลกชัน
- Patch - แก้ไขฟิลด์หนึ่งฟิลด์หรือมากกว่าในเรกคอร์ด
- Update UpdateIf - อัปเดตเรกคอร์ดที่ตรงกับเกณฑ์ที่คุณระบุอย่างน้อยหนึ่งอย่างขึ้นไป
- Remove RemoveIf - ลบเรกคอร์ดที่ตรงกับเกณฑ์ที่คุณระบุอย่างน้อยหนึ่งอย่างขึ้นไป
สูตรเรกคอร์ด
คุณสามารถสร้างสูตรที่คำนวณข้อมูลสำหรับเรกคอร์ดหนึ่ง ๆ นำเรกคอร์ดหนึ่ง ๆ มาเป็นอาร์กิวเมนต์ และให้เรกคอร์ดหนึ่ง ๆ เป็นค่าที่ส่งกลับได้ กลับไปยังตัวอย่างแกลเลอรีของเราด้านบนอีกครั้ง ลองใช้คุณสมบัติ Gallery1.Selected เพื่อแสดงข้อมูลจากเรกคอร์ดใดก็ตามที่ผู้ใช้เลือกในแกลเลอรีนั้น
เพิ่ม ปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
Collect( SelectedRecord, Gallery1.Selected )ขณะที่กดแป้น Alt ค้างไว้ ให้เลือกปุ่ม
ในเมนู ไฟล์ เลือก คอลเลกชัน
สูตรนี้ส่งกลับเรกคอร์ดที่ไม่เพียงมีข้อมูลจากเรกคอร์ดที่เลือกอยู่ในแกลเลอรีเท่านั้น แต่ยังมีตัวควบคุมแต่ละตัวที่แกลเลอรีนั้นด้วย ตัวอย่างเช่น เรกคอร์ดมีทั้งคอลัมน์ SampleText ซึ่งตรงกับคอลัมน์ SampleText ในตารางต้นฉบับ และคอลัมน์ Subtitle1 ซึ่งแสดงถึงป้ายชื่อที่แสดงข้อมูลดังกล่าวจากคอลัมน์นั้น เลือกไอคอนตารางในคอลัมน์ Subtitle1 เพื่อเจาะลึกลงในข้อมูลดังกล่าว
หมายเหตุ
คอลัมน์ Subtitle1 อาจมีชื่อว่า Subtitle2 หรือคล้ายกันถ้าคุณได้เพิ่มองค์ประกอบนอกเหนือจากองค์ประกอบที่หัวข้อนี้ระบุ
เมื่อคุณเลือกเรกคอร์ดแล้ว คุณสามารถแยกฟิลด์ใด ๆ ออกมาได้ด้วย . ตัวดำเนินการ
เพิ่มตัวควบคุม ป้ายชื่อ จากนั้นย้ายไปไว้ภายใต้แกลเลอรีและปุ่ม
ตั้งค่าคุณสมบัติ ข้อความ ของป้ายชื่อให้เป็นนิพจน์นี้:
"Selected: " & Gallery1.Selected.SampleHeading
คุณได้นำคุณสมบัติ ถูกเลือก ซึ่งเป็นเรกคอร์ดมา และได้แยกคุณสมบัติ SampleHeading ออกมา
คุณยังสามารถใช้เรกคอร์ดเป็นคอนเทนเนอร์อเนกประสงค์สำหรับค่าที่มีชื่อที่เกี่ยวข้องได้
- ถ้าคุณสร้างสูตรด้วยฟังก์ชัน UpdateContext และ Navigate ให้ใช้เรกคอร์ดเพื่อรวบรวม ตัวแปรบริบท ที่คุณต้องการอัปเดต
- ใช้คุณสมบัติ อัปเดต ในตัวควบคุม แก้ไขฟอร์ม เพื่อรวบรวมการเปลี่ยนแปลงที่ทำโดยผู้ใช้ในฟอร์ม
- ใช้ฟังก์ชัน Patch เพื่ออัปเดตแหล่งข้อมูลและผสานเรกคอร์ด
ในกรณีเหล่านี้ เรกคอร์ดจะไม่เป็นส่วนหนึ่งของตาราง
คุณสมบัติฟังก์ชันเรกคอร์ดและตัวควบคุม
ฟังก์ชันที่คืนค่าเป็นเรกคอร์ด:
- FirstN LastN - ส่งกลับเรกคอร์ดแรกหรือเรกคอร์ดสุดท้ายของตาราง
- Lookup - ส่งกลับเรกคอร์ดแรกจากตารางที่ตรงกับเกณฑ์อย่างน้อยหนึ่งอย่าง
- Patch – อัปเดตแหล่งข้อมูลหรือผสานเรกคอร์ด
- Defaults – ส่งคืนค่าเริ่มต้นสำหรับแหล่งข้อมูล
คุณสมบัติที่คืนค่าเป็นเรกคอร์ด:
- Selected – ใช้กับแกลเลอรีและกล่องรายการ คืนค่าเรกคอร์ดที่เลือกในปัจจุบัน
- Updates – ใช้กับแกลเลอรี นำการเปลี่ยนแปลงที่ผู้ใช้ทำทั้งหมดมาไว้รวมกันในฟอร์มรายการข้อมูล
- Update - ใช้กับตัวควบคุมการป้อนข้อมูล เช่น ตัวควบคุมการป้อนข้อความ และแถบเลื่อน ตั้งค่าแต่ละคุณสมบัติสำหรับแกลเลอรีเพื่อรวมเข้าด้วยกัน
ขอบเขตเรกคอร์ด
บางฟังก์ชันทำงานโดยคำนวณสูตรกับเรกคอร์ดทั้งหมดของตารางทีละเรกคอร์ด ผลลัพธ์ของสูตรจะถูกนำไปใช้ในหลายวิธี:
- AddColumns - สูตรให้ค่าของฟิลด์ที่ถูกเพิ่ม
- Average Max Min Sum StdevP VarP - สูตรให้ค่าเพื่อรวม
- Filter Lookup - สูตรกำหนดว่าควรรวมเรกคอร์ดลงในเอาท์พุตด้วยหรือไม่
- Concat - สูตรกำหนดสตริงเพื่อเชื่อมเข้าด้วยกัน
- Distinct - สูตรคืนค่า ใช้เพื่อระบุเรกคอร์ดที่ซ้ำกัน
- ForAll - สูตรสามารถคืนค่าใดก็ได้ โดยมักจะมีผลข้างเคียง
- Sort - สูตรให้ค่าเพื่อจัดเรียงเรกคอร์ด
- "With - สูตรสามารถคืนค่าใดก็ได้ โดยมักจะมีผลข้างเคียง
ภายในสูตรเหล่านี้ คุณสามารถอ้างถึงฟิลด์ของเรกคอร์ดที่กำลังประมวลผลอยู่ได้ แต่ละฟังก์ชันเหล่านี้สร้าง "ขอบเขตเรกคอร์ด" ที่สูตรคำนวณได้ ซึ่งฟิลด์ของเรกคอร์ดเป็นตัวระบุระดับสูงที่สุด คุณยังสามารถอ้างอิงคุณสมบัติการควบคุมและค่าอื่นๆ จากภายในแอปของคุณได้เช่นกัน
ตัวอย่างเช่น ตาราง ผลิตภัณฑ์:
หากต้องการสร้างตารางตัวอย่างนี้ในแอปของคุณ ให้ใส่ปุ่ม และตั้งค่าคุณสมบัติ OnSelect ในสูตรนี้ จากนั้นเลือกปุ่ม (คลิกในขณะที่คุณกดปุ่ม Alt ค้างไว้ใน Power Apps Studio):
Set( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
เมื่อต้องการหาว่าผลิตภัณฑ์ไหนมีคำขอเกินกว่าที่มีหรือไม่:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
อาร์กิวเมนต์แรกของ Filter คือตารางของเรกคอร์ดที่ดำเนินการ และอาร์กิวเมนต์ที่สองคือสูตร Filter สร้างขอบเขตเรกคอร์ดสำหรับคำนวณสูตรนี้ซึ่งฟิลด์ของแต่ละเรกคอร์ดพร้อมให้ใช้งาน ในกรณีนี้คือ ผลิตภัณฑ์ ปริมาณที่ร้องขอ และ ปริมาณที่มี ผลลัพธ์ของการเปรียบเทียบกำหนดว่าแต่ละเรกคอร์ดควรถูกรวมไว้ในผลลัพธ์ของฟังก์ชันหรือไม่:
เพิ่มเติมจากตัวอย่างนี้ เราสามารถคำนวณจำนวนของผลิตภัณฑ์ที่จะสั่งซื้อได้:
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
ต่อไปนี้ เราจะเพิ่มคอลัมน์จากการคำนวณไปยังผลลัพธ์ AddColumns มีขอบเขตเรกคอร์ดที่ใช้เพื่อคำนวณความแตกต่างระหว่างสิ่งที่ขอกับสิ่งที่มี
สุดท้ายนี้ เราสามารถลดตารางผลลัพธ์ให้เหลือเพียงคอลัมน์ที่เราต้องการได้:
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
สังเกตว่าในตัวอย่างข้างต้น เราใช้เครื่องหมายอัญประกาศ (") ในบางจุด และอัญประกาศเดี่ยว (') ในบางจุด เราต้องใช้เครื่องหมายอัญประกาศเดี่ยวเมื่ออ้างถึงค่าของวัตถุ เช่น เป็นฟิลด์หรือตาราง ซึ่งชื่อของวัตถุมีช่องว่าง เราใช้เครื่องหมายอัญประกาศเมื่อเราไม่อ้างถึงค่าของวัตถุแต่เพียงแค่กล่าวถึง โดยเฉพาะในสถานการณ์ที่วัตถุยังไม่มีอยู่จริง เช่นในกรณีของ AddColumns
การแก้ไขความคลุมเครือ
ชื่อฟิลด์ที่เพิ่มด้วยขอบเขตของเรกคอร์ดจะแทนที่ชื่อเดียวกันจากที่อื่นในแอป เมื่อเกิดสิ่งนี้ขึ้น คุณยังสามารถเข้าถึงค่าจากภายนอกขอบเขตเรกคอร์ดได้ด้วยตัวดำเนินการ @ การแก้ไขความคลุมเครือ ได้:
- เมื่อต้องการเข้าถึงค่าจากขอบเขตของเรกคอร์ดที่ซ้อนกัน ให้ใช้ตัวดำเนินการ @ ที่มีชื่อของตารางที่กำลังดำเนินการโดยใช้รูปแบบนี้
ตาราง[@FieldName] - เมื่อต้องการเข้าถึงค่าส่วนกลาง เช่น แหล่งข้อมูล คอลเลกชัน และตัวแปรบริบท ให้ใช้รูปแบบ [@ObjectName] (โดยไม่ต้องกำหนดตาราง)
ถ้าตารางที่กำลังถูกดำเนินการเป็นนิพจน์ เช่น Filter( ตาราง, ... ) จะไม่สามารถใช้ตัวดำเนินการการแก้ไขความคลุมเครือได้ เฉพาะขอบเขตเรกคอร์ดด้านในสุดเท่านั้นที่สามารถเข้าถึงฟิลด์จากนิพจน์ตารางนี้ได้ โดยไม่ใช้ตัวดำเนินการการแก้ไขความคลุมเครือ
ตัวอย่างเช่น ลองนึกว่าคุณมีคอลเลกชัน X:
คุณสามารถสร้างคอลเลกชันนี้ได้ด้วย ClearCollect( X, [1, 2] )
และคอลเลกชัน Y:
คุณสามารถสร้างคอลเลกชันนี้ได้ด้วย ClearCollect( Y, ["A", "B"] )
นอกจากนี้ กำหนดตัวแปรบริบทที่ชื่อว่า ค่า ด้วยสูตรนี้: UpdateContext( {Value: "!"} )
มารวมข้อมูลเข้าด้วยกัน ในบริบทนี้ สูตรต่อไปนี้:
Ungroup(
ForAll( X,
ForAll( Y,
Y[@Value] & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
สร้างตารางนี้:
เกิดอะไรขึ้นที่นี่ ฟังก์ชัน ForAll ด้านนอกสุดกำหนดขอบเขตเรกคอร์ดสำหรับ X ซึ่งทำให้สามารถเข้าถึงฟิลด์ ค่า ของแต่ละเรกคอร์ดขณะที่ประมวลผล ซึ่งสามารถเข้าถึงได้เพียงการใช้คำว่า ค่า หรือโดยใช้ X[@Value]
ฟังก์ชั่น ForAll ด้านในสุดกำหนดขอบเขตเรกคอร์ดอีกอันหนึ่งสำหรับ Y เนื่องจากตารางนี้ยังมีฟิลด์ ค่า ที่ถูกกำหนด ในการใช้ ค่า ที่นี่หมายถึงฟิลด์ในเรกคอร์ด Y ไม่ได้หมายถึง X อีกต่อไป ตรงนี้เพื่อเข้าถึง ค่า ของ X เราจะต้องใช้เวอร์ชันที่ยาวขึ้น กับตัวดำเนินการการแก้ไขความคลุมเครือ
เนื่องจาก Y คือขอบเขตเรกคอร์ดด้านในสุด การเข้าถึงฟิลด์ของตารางนี้จึงไม่ต้องใช้การขยายความ ทำให้เราใช้สูตรนี้เพื่อให้ได้ผลลัพธ์เดียวกัน:
Ungroup(
ForAll( X,
ForAll( Y,
Value & Text( X[@Value] ) & [@Value]
)
),
"Value"
)
ขอบเขตเรกคอร์ด ForAll ทั้งหมดจะแทนที่ขอบเขตส่วนกลาง ตัวแปรบริบท ค่า ที่เรากำหนดจะไม่พร้อมให้ใช้งานด้วยชื่อ หากไม่ใช้ตัวดำเนินการการแก้ไขความคลุมเครือ ในการเข้าถึงค่านี้ใช้ [@Value]
Ungroup ลดจำนวนผลลัพธ์ลง เพราะฟังก์ชัน ForAll ที่ซ้อนอยู่จะแสดงผลเป็นตารางผลลัพฑ์ที่ซ้อนกัน
ตารางแบบคอลัมน์เดียว
ในการใช้งานคอลัมน์เดียวจากตารางให้ใช้ฟังก์ชั่น ShowColumns ดังในตัวอย่างนี้:
ShowColumns( Products, "Product" )
สูตรนี้สร้างตารางคอลัมน์เดียวนี้:
สำหรับทางเลือกที่สั้นกว่า ระบุ Table.Column ซึ่งแยกตารางคอลัมน์เดียวของแค่ คอลัมน์ จาก Table ตัวอย่างเช่น สูตรนี้ให้ผลลัพธ์เหมือนกับการใช้ ShowColumns
Products.Product
เรกคอร์ดแบบในบรรทัด
คุณแสดงถึงเรกคอร์ดโดยใช้วงเล็บปีกกาที่มีค่าฟิลด์ที่มีชื่อ ตัวอย่างเช่น คุณสามารถแสดงเรกคอร์ดแรกในตารางตอนแรกของหัวข้อนี้ได้โดยใช้สูตรนี้:
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }
คุณยังสามารถฝังสูตรลงในสูตรอื่นได้ ดังที่ตัวอย่างนี้แสดง:
{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }
คุณสามารถซ้อนเรกคอร์ดโดยซ้อนวงเล็บปีกกา ดังที่ตัวอย่างนี้แสดง:
{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }
ล้อมรอบแต่ละชื่อคอลัมน์ที่มีอักขระพิเศษ เช่น ช่องว่างหรือทวิภาค ด้วยเครื่องหมายอัญประกาศเดี่ยว เมื่อต้องการใช้เครื่องหมายอัญประกาศเดี่ยวภายในชื่อคอลัมน์ ให้พิมพ์สองครั้ง
สังเกตว่าค่าในคอลัมน์ ราคา ไม่มีสัญลักษณ์ค่าเงิน เช่น เครื่องหมายดอลลาร์ การจัดรูปแบบดังกล่าวจะถูกนำมาใช้เมื่อแสดงค่า
ตารางแบบในบรรทัด
คุณสามารถสร้างตารางได้โดยใช้ฟังก์ชัน Table และชุดของเรกคอร์ด คุณสามารถแสดงตารางแรกในตอนแรกของหัวข้อนี้ได้โดยใช้สูตรนี้:
Table(
{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
{ Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
{ Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 }
)
คุณยังสามารถซ้อนตารางได้:
Table(
{ Name: "Chocolate",
'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
{ Quarter: "Q2", OnHand: 18, OnOrder: 0 } )
}
)
ตารางแบบค่าในบรรทัด
คุณสามารถสร้างตารางแบบคอลัมน์เดียวได้โดยระบุค่าในวงเล็บเหลี่ยม ตารางผลลัพธ์มีคอลัมน์เดียว ที่ชื่อว่า ค่า
ตัวอย่างเช่น [ 1, 2, 3, 4 ]
เทียบเท่ากับ Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } )
และคืนค่าเป็นตารางนี้:
หมายเหตุ
บอกให้เราทราบเกี่ยวกับภาษาที่คุณต้องการในคู่มือ ทำแบบสำรวจสั้นๆ (โปรดทราบว่าแบบสำรวจนี้เป็นภาษาอังกฤษ)
แบบสำรวจนี้ใช้เวลาทำประมาณเจ็ดนาที ไม่มีการเก็บข้อมูลส่วนบุคคล (คำชี้แจงสิทธิ์ส่วนบุคคล)