หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Power Fx เป็นภาษาที่มีรหัสต่ํา Microsoft Power Platform ใช้ เป็นภาษาการเขียนโปรแกรมเพื่อวัตถุประสงค์ทั่วไป ประเภทที่แข็งแกร่ง ประกาศและใช้งานได้
Power Fx แสดงเป็นข้อความที่เป็นมิตรต่อมนุษย์ ซึ่งเป็นภาษาแบบเขียนโค้ดเล็กน้อยที่ผู้สร้างสามารถใช้งานได้โดยตรงในแถบสูตรเหมือน Excel หรือหน้าต่างข้อความ Visual Studio Code "ต่ํา" ในรหัสต่ํามาจากลักษณะที่กระชับและเรียบง่ายของภาษาซึ่งทําให้งานการเขียนโปรแกรมทั่วไปง่ายขึ้นสําหรับผู้สร้างและนักพัฒนา ซึ่งช่วยให้สเปกตรัมเต็มของการพัฒนาจากไม่มีรหัสสําหรับผู้ที่ไม่เคยเขียนโปรแกรมมาก่อนเพื่อ "pro-code" สําหรับมืออาชีพที่ปรุงรสโดยไม่มีการเรียนรู้หรือเขียนหน้าผาใหม่ ทีมที่หลากหลายสามารถทํางานร่วมกันและประหยัดเวลาและค่าใช้จ่าย
หมายเหตุ
- Microsoft Power Fx เป็นชื่อใหม่สำหรับภาษาสูตรสำหรับแอปพื้นที่ทำงานใน Power Apps ภาพรวมและบทความที่เกี่ยวข้องนี้เป็นงานที่กําลังดําเนินการอยู่ในขณะที่ Microsoft แยกภาษาจากแอปพื้นที่ทํางาน รวมเข้ากับผลิตภัณฑ์ Microsoft Power Platform อื่น ๆ และทําให้พร้อมใช้งานในรูปแบบ โอเพนซอร์ส (Open Source) หากต้องการเรียนรู้เพิ่มเติมและสัมผัสภาษาวันนี้ ให้เริ่มด้วย เริ่มต้นใช้งานสูตรในแอปพื้นที่ทำงาน ในคู่มือ Power Apps และลงทะเบียน Power Apps รุ่นทดลองใช้ ฟรี
- ในบทความนี้ ผู้สร้าง หมายถึงผู้ใช้ที่อาจใช้คุณลักษณะในตอนท้ายของสเปกตรัมทักษะการเขียนโปรแกรม นักพัฒนาอ้างอิงถึงผู้ใช้เมื่อฟีเจอร์นี้ขั้นสูงกว่าและน่าจะอยู่นอกเหนือขอบเขตของผู้ใช้ Excel ทั่วไป
Power Fx ผูกออบเจ็กต์เข้าด้วยกันด้วยสูตรที่เหมือนกระดาษคำนวณประกาศ ตัวอย่างเช่น ลองนึกถึงคุณสมบัติ มองเห็นได้ ของตัวควบคุม UI เป็นเซลล์ในเวิร์กชีต Excel พร้อมด้วยสูตรที่เกี่ยวข้องซึ่งคำนวณค่าตามคุณสมบัติของตัวควบคุมอื่นๆ ตรรกะของสูตรจะคำนวณค่าใหม่โดยอัตโนมัติ ซึ่งคล้ายกับวิธีการทำงานของสเปรดชีต ซึ่งส่งผลต่อการมองเห็นของตัวควบคุม
อกจากนี้ Power Fx เสนอตรรกะที่จำเป็นเมื่อจำเป็น โดยทั่วไปเวิร์กชีตไม่มีปุ่มที่สามารถส่งการเปลี่ยนแปลงไปยังฐานข้อมูลได้ แต่แอปมักจะมี ภาษานิพจน์เดียวกันนี้ใช้สำหรับทั้งตรรกะเชิงประกาศและแบบจำเป็น
Microsoft จะทําให้ Power Fx พร้อมใช้งานเป็นซอฟต์แวร์โอเพนซอร์ส ขณะนี้มีการรวมเข้ากับแอปพื้นที่ทํางาน และ Microsoft กําลังอยู่ระหว่างการแยกออกจาก Power Apps สําหรับการใช้งานในผลิตภัณฑ์ Microsoft Power Platform อื่น ๆ และ โอเพนซอร์ส (Open Source) ข้อมูลเพิ่มเติม: Microsoft Power Fx บน GitHub
บทความนี้เป็นภาพรวมของภาษาและหลักการออกแบบ เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Power Fx ให้ดูบทความต่อไปนี้:
- ประเภทข้อมูล
- ตัวดำเนินการและตัวระบุ
- ตาราง
- ตัวแปร
- ตรรกะเชิงบังคับ
- การสนับสนุนทั่วโลก
- ไวยากรณ์การแสดงออก
- ไวยากรณ์สูตร YAML
นึกถึงสเปรดชีต
จะเกิดอะไรขึ้น ถ้าคุณสามารถสร้างแอปได้อย่างง่ายดายเหมือนคุณสร้างเวิร์กชีตใน Excel
จะเป็นอย่างไรหากคุณสามารถใช้ประโยชน์จากความรู้เกี่ยวกับสเปรดชีตที่มีอยู่ของคุณ
คําถามเหล่านี้เป็นแรงบันดาลใจในการสร้าง Power Apps และ Power Fx ผู้คนนับร้อยล้านคนสร้างแผ่นงานด้วย Excel ทุกวัน มาสร้างแอปที่ใช้งานง่ายและใช้แนวคิด Excel ที่พวกเขารู้จักอยู่แล้ว โดยการแยก Power Fx ออกจาก Power Apps เราจะตอบคำถามเหล่านี้สำหรับการสร้างระบบอัตโนมัติ หรือตัวแทนเสมือน หรือโดเมนอื่นๆ
ภาษาโปรแกรมทั้งหมด รวมทั้ง Power Fx มี นิพจน์: วิธีแสดงการคำนวณตัวเลข สตริง หรือชนิดข้อมูลอื่นๆ ตัวอย่างเช่น,mass * acceleration ในภาษาส่วนใหญ่เป็นการแสดงออกถึงการคูณ mass และ acceleration คุณสามารถใส่ผลลัพธ์ของนิพจน์ในตัวแปร ใช้เป็นอาร์กิวเมนต์ไปยังขั้นตอน หรือซ้อนในนิพจน์ที่ใหญ่กว่า
Power Fx ก้าวไปอีกขั้น ตัวนิพจน์เองไม่ได้บอกอะไรเกี่ยวกับสิ่งที่กำลังคำนวณ จะขึ้นอยู่กับผู้สร้างที่จะวางไว้ในตัวแปร หรือส่งต่อไปยังฟังก์ชัน ใน Power Fx แทนที่จะเขียนเฉพาะนิพจน์ที่ไม่มีความหมายเฉพาะ คุณเขียน สูตร ที่ผูกนิพจน์กับตัวระบุ ที่คุณเขียน force = mass * acceleration เป็นสูตรในการคำนวณ force ตาม mass หรือ acceleration เปลี่ยนแปลง force อัปเดตเป็นค่าใหม่โดยอัตโนมัติ นิพจน์อธิบายการคำนวณ สูตรตั้งชื่อการคำนวณนั้นและใช้เป็นสูตร นี่คือเหตุผลที่เราอ้างถึง Power Fx เป็น สูตรภาษา
ตัวอย่างเช่น สูตรนี้จาก Stack Overflow ค้นหาสตริงในลำดับย้อนกลับ ใน Excel จะมีลักษณะดังภาพต่อไปนี้
ภาพหน้าจอของแถบสูตรใน Excel ที่มีสูตร: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) เซลล์ A1 ประกอบด้วยข้อความ "Hello, World! ยินดีที่ได้รู้จัก!” เซลล์ A2 มีข้อความว่า “คุณ!”
Power Fx ใช้งานได้กับสูตรเดียวกันนี้ โดยการอ้างอิงเซลล์จะถูกแทนที่ด้วยการอ้างอิงคุณสมบัติการควบคุม:
ภาพหน้าจอของแถบสูตร Power Fx ใน Power Apps สูตรคือ = RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) ในกล่องป้อนข้อมูลด้านล่างสูตร ข้อความ "Hello, World! ยินดีที่ได้รู้จัก!" ปรากฏขึ้นทีละตัวอักษร ในเวลาเดียวกันในกล่องป้ายชื่อ ตัวอักษรของคำสุดท้ายจะปรากฏขึ้น เมื่อข้อความทั้งหมดปรากฏในกล่องป้อนข้อมูล คำว่า "คุณ!" จะปรากฏในกล่องป้ายชื่อ
เมื่อมีการเปลี่ยนแปลงค่า Input ตัวควบคุม ตัวควบคุมจะ Label คํานวณสูตรใหม่และแสดงค่าใหม่โดยอัตโนมัติ ไม่มีตัวจัดการเหตุการณ์ OnChange ที่นี่ เหมือนที่พบบ่อยในภาษาอื่นๆ
อีกตัวอย่างหนึ่งใช้สูตรสําหรับ Fill สีของหน้าจอ ในฐานะที่เป็นแถบเลื่อนที่ควบคุมการเปลี่ยนแปลงสีแดง สีเขียว และสีน้ําเงิน สีพื้นหลังจะเปลี่ยนแปลงโดยอัตโนมัติเมื่อมีการคํานวณใหม่
ไม่มีเหตุการณ์ OnChange สำหรับตัวควบคุมแถบเลื่อน เหมือนที่พบบ่อยในภาษาอื่นๆ ไม่มีวิธีใดที่จะตั้งค่าคุณสมบัติ Fill ได้อย่างชัดเจน หากสีไม่เป็นไปตามที่คาดไว้ คุณต้องดูสูตรนี้เพื่อทำความเข้าใจว่าเหตุใดจึงไม่ทำงาน คุณไม่จำเป็นต้องค้นหาผ่านแอปเพื่อค้นหาโค้ดที่ตั้งค่าคุณสมบัติในเวลาที่ไม่คาดคิด ไม่มีองค์ประกอบเวลา ค่าสูตรที่ถูกต้องจะยังคงอยู่เสมอ
เนื่องจากแถบเลื่อนถูกตั้งค่าเป็นสีเข้ม ป้ายสำหรับสีแดง สีเขียว และสีน้ำเงินจะเปลี่ยนเป็นสีขาวเพื่อชดเชย การเปลี่ยนแปลงนี้เกิดขึ้นผ่านสูตรอย่างง่ายบน Color คุณสมบัติสําหรับแต่ละตัวควบคุมป้ายชื่อ
สิ่งที่ดีเกี่ยวกับสูตรนี้คือ แยกจากสิ่งที่เกิดขึ้นสําหรับ Fill สี: การคํานวณที่แตกต่างกันทั้งหมดสองแบบ แทนที่จะเป็นกระบวนการก้อนขนาดใหญ่ ตรรกะ Power Fx มักจะประกอบด้วยสูตรที่มีขนาดเล็กกว่าจำนวนมากซึ่งไม่ขึ้นต่อกัน โครงสร้างนี้ทําให้ง่ายต่อการทําความเข้าใจและปรับปรุงโดยไม่ต้องรบกวนตรรกะที่มีอยู่
Power Fx เป็นภาษาเชิงประกาศ เช่นเดียวกับ Excel ผู้สร้างจะกำหนดพฤติกรรมที่พวกเขาต้องการ แต่ขึ้นอยู่กับระบบที่จะกำหนดและเพิ่มประสิทธิภาพว่าจะทำอย่างไรและเมื่อใด เพื่อให้ใช้งานได้จริง งานส่วนใหญ่ทำผ่านฟังก์ชันล้วนๆ โดยไม่มีผลข้างเคียง Power Fx ยังเป็นภาษาที่ใช้งานได้ (เช่นเดียวกับ Excel)
ใช้งานเสมอ
แง่มุมที่กำหนดของเวิร์กชีตคือ มีการใช้งานอยู่เสมอ และการเปลี่ยนแปลงจะสะท้อนให้เห็นทันที ไม่มีโหมดคอมไพล์หรือรันในเวิร์กชีต เมื่อคุณปรับเปลี่ยนสูตรหรือใส่ค่า เวิร์กชีตจะคํานวณใหม่ทันทีเพื่อแสดงการเปลี่ยนแปลง พื้นผิวของข้อผิดพลาดที่ตรวจพบทันทีและไม่รบกวนส่วนที่เหลือของเวิร์กชีต
Power Fx ใช้สิ่งเดียวกัน ใช้คอมไพเลอร์แบบเพิ่มหน่วยเพื่อทําให้โปรแกรมซิงค์กับข้อมูลที่ใช้งานอย่างต่อเนื่อง การเปลี่ยนแปลงจะเผยแพร่โดยอัตโนมัติผ่านกราฟของโปรแกรม ซึ่งมีผลต่อผลลัพธ์ของการคํานวณที่ขึ้นต่อกัน การคํานวณเหล่านี้อาจขับเคลื่อนคุณสมบัติบนตัวควบคุม เช่น สีหรือตําแหน่ง คอมไพเลอร์แบบเพิ่มหน่วยยังมอบประสบการณ์การแก้ไขสูตรที่หลากหลายด้วย IntelliSense คำแนะนำ การเติมข้อความอัตโนมัติ และการตรวจสอบประเภท
ในภาพเคลื่อนไหวต่อไปนี้ หมายเลขลําดับจะแสดงในตัวควบคุมป้ายชื่อที่ขึ้นอยู่กับตัวควบคุมแถบเลื่อน แม้ว่าจะมีข้อผิดพลาดสองตัวบนป้ายชื่อด้านล่าง แอปนี้มีการใช้งานและโต้ตอบได้มาก ความพยายามครั้งแรกในการแก้ไขสูตรโดยการป้อน .InvalidName ส่งผลให้มีเส้นสีแดงทันที และแสดงข้อผิดพลาด ตามที่ควร แต่แอปยังคงทำงานต่อไป
เมื่อคุณป้อน .Employeeบานหน้าต่าง จะ Data เพิ่มตาราง พนักงาน ดึงข้อมูลเมตาดาต้าสําหรับตารางนี้ และให้คําแนะนําสําหรับคอลัมน์ทันที คุณเพิ่งเดินผ่านความสัมพันธ์จากตารางหนึ่งไปยังอีกตารางหนึ่ง และระบบทําการปรับปรุงที่จําเป็นในการอ้างอิงของแอป สิ่งเดียวกันนี้เกิดขึ้นเมื่อเพิ่ม .Customer
หลังจากการเปลี่ยนแปลงแต่ละครั้ง แถบเลื่อนจะยังคงมีค่าสุดท้ายและตัวแปรจะยังคงรักษาค่าไว้ ตลอดระยะเวลาดังกล่าว หมายเลขลําดับจะยังคงแสดงอยู่ในป้ายชื่อด้านบนตามที่ควรจะเป็น แอปกําลังถ่ายทอดสด ประมวลผลข้อมูลจริงตลอดเวลา คุณสามารถบันทึก เดินออกไป และผู้อื่นสามารถเปิดและใช้เหมือนกับ Excel ไม่มีขั้นตอนการสร้าง ไม่มีการคอมไพล์ มีเพียงขั้นตอนการเผยแพร่เพื่อตรวจสอบว่าเวอร์ชันของแอปพร้อมสําหรับผู้ใช้หรือไม่
โค้ดเล็กน้อย
Power Fx อธิบายตรรกะทางธุรกิจด้วยสูตรที่กระชับแต่ทรงพลัง ตรรกะส่วนใหญ่จะลดลงเป็นเส้นเดียวที่มีความการแสดงออกและการควบคุมมากมายสําหรับความต้องการที่ซับซ้อนมากขึ้น เป้าหมายคือเพื่อให้จำนวนแนวคิดที่ผู้ผลิตจำเป็นต้องเข้าใจให้น้อยที่สุดโดยที่ผู้ใช้ Excel จะไม่ทราบดีกว่า
ตัวอย่างเช่น หากต้องการค้นหาชื่อจริงของพนักงานสำหรับใบสั่ง คุณเขียน Power Fx ดังแสดงในภาพเคลื่อนไหวต่อไปนี้ นอกเหนือจากแนวคิดของ Excel แล้ว แนวคิดเพิ่มเติมเพียงอย่างเดียวที่ใช้ในที่นี้คือจุด "." เครื่องหมายสำหรับการเจาะลึกไปยังโครงสร้างข้อมูล ในกรณีนี้ .Employee.'First Name' ภาพเคลื่อนไหวแสดงการแมประหว่างส่วนต่างๆ ของสูตร Power Fx และแนวคิดที่ต้องเข้ารหัสอย่างชัดเจนใน JavaScript ที่เทียบเท่ากัน
มาดูในเชิงลึกมากขึ้นสําหรับทุกสิ่งที่ Power Fx ทําได้สําหรับเราและอิสรภาพที่ต้องปรับให้เหมาะสมเนื่องจากสูตรเป็นแบบประกาศ:
อะซิงโครนัส : การดำเนินการข้อมูลทั้งหมดใน Power Fx เป็นแบบอะซิงโครนัส ผู้สร้างไม่จำเป็นต้องระบุสิ่งนี้ และผู้สร้างไม่จำเป็นต้องซิงโครไนซ์การดำเนินการหลังจากสิ้นสุดการโทร ผู้สร้างไม่จำเป็นต้องตระหนักถึงแนวคิดนี้เลย พวกเขาไม่จำเป็นต้องรู้ว่าสัญญาหรือฟังก์ชันแลมด้าคืออะไร
ในพื้นที่และระยะไกล - Power Fx ใช้รูปแบบและฟังก์ชันเดียวกันสำหรับข้อมูลในหน่วยความจำภายในและเชื่อมต่อฐานข้อมูลหรือบริการจากระยะไกล ผู้ใช้ไม่จำเป็นต้องคิดถึงความแตกต่างนี้ Power Fx มอบหมายสิ่งที่สามารถทำได้ให้กับเซิร์ฟเวอร์โดยอัตโนมัติ เพื่อประมวลผลตัวกรองและจัดเรียงข้อมูลที่นั่นอย่างมีประสิทธิภาพมากขึ้น
ข้อมูลเชิงสัมพันธ์ คำสั่งซื้อและลูกค้าเป็นตารางสองตารางที่แตกต่างกันโดยมีความสัมพันธ์แบบหลายต่อหนึ่ง แบบสอบถาม OData ต้องการ "$expand" ที่มีความรู้เกี่ยวกับคีย์นอก ซึ่งคล้ายกับการเข้าร่วมใน SQL สูตรนี้ไม่มีเลย อันที่จริง คีย์ฐานข้อมูลเป็นอีกแนวคิดหนึ่งที่ผู้สร้างไม่จำเป็นต้องรู้ ผู้สร้างสามารถใช้สัญกรณ์จุดง่าย ๆ เพื่อเข้าถึงกราฟทั้งหมดของความสัมพันธ์จากเรกคอร์ด
การฉายภาพ :เมื่อเขียนแบบสอบถาม นักพัฒนาหลายคนเขียน
select * from tableซึ่งจะนำคอลัมน์ข้อมูลทั้งหมดกลับมา Power Fx วิเคราะห์คอลัมน์ทั้งหมดที่ใช้ทั่วทั้งแอป แม้กระทั่งการขึ้นต่อกันของสูตร การคาดคะเนจะได้รับการปรับให้เหมาะสมโดยอัตโนมัติ และอีกครั้ง ผู้สร้างไม่จำเป็นต้องรู้ว่า "การคาดคะเน" หมายถึงอะไรดึงเฉพาะสิ่งที่จำเป็น : ในตัวอย่างนี้
LookUpฟังก์ชันนี้หมายความว่าควรดึงข้อมูลเพียงหนึ่งรายการเท่านั้นและนั่นคือทั้งหมดที่ส่งคืนมา หากมีการร้องขอเรกคอร์ดเพิ่มเติมโดยใช้ฟังก์ชันFilterที่ซึ่งเรกคอร์ดหลายพันรายการอาจรับรองมีการส่งคืนข้อมูลเพียงหน้าเดียวในแต่ละครั้ง ตามลำดับ 100 เรกคอร์ดต่อหน้า ผู้ใช้ต้องรูปแบบท่าทางผ่านแกลเลอรีหรือตารางข้อมูลเพื่อดูข้อมูลเพิ่มเติม และจะนําเข้าข้อมูลเพิ่มเติมสําหรับพวกเขาโดยอัตโนมัติ ผู้สร้างสามารถให้เหตุผลเกี่ยวกับชุดข้อมูลจำนวนมากโดยไม่จำเป็นต้องคิดเกี่ยวกับการจำกัดคำขอข้อมูลเป็นกลุ่มที่จัดการได้เรียกใช้เมื่อจําเป็นเท่านั้น: คุณกําหนดสูตรสําหรับคุณสมบัติของ
Textตัวควบคุมป้ายชื่อ เมื่อตัวแปรที่เลือกเปลี่ยนไปLookUpจะคำนวณใหม่โดยอัตโนมัติและมีการอัปเดตป้ายชื่อ ผู้สร้างไม่จำเป็นต้องเขียนตัวจัดการ OnChange สำหรับการเลือก และไม่จำเป็นต้องจำไว้ว่าป้ายชื่อนี้ขึ้นอยู่กับรายการนั้น นี่คือการเขียนโปรแกรมเชิงประกาศตามที่กล่าวไว้ก่อนหน้านี้: ผู้สร้างระบุสิ่งที่ต้องการให้มีในป้ายชื่อ ไม่ใช่ว่าควรดึงข้อมูลอย่างไรหรือเมื่อใด ถ้าป้ายชื่อนี้มองไม่เห็นเนื่องจากอยู่บนหน้าจอที่มองไม่เห็น หรือVisibleคุณสมบัติของป้ายชื่อเป็นเท็จ คุณสามารถเลื่อนการคํานวณนี้ได้จนกว่าป้ายชื่อจะมองเห็นได้และกําจัดออกไปได้อย่างมีประสิทธิภาพหากไม่ค่อยเกิดขึ้นExcel การแปลไวยากรณ์ : ผู้ใช้หลายคนทราบว่ามีการใช้เครื่องหมายและ (& ) สําหรับการเรียงต่อสตริงใน Excel JavaScript ใช้เครื่องหมายบวก (+) และภาษาอื่นๆ ใช้จุด (.)ชื่อที่แสดงและการแปล -
First Nameใช้ใน Power Fx สูตรในขณะที่nwind_firstnameใช้ใน JavaScript ที่เทียบเท่า ใน Microsoft Dataverse และ SharePoint มีชื่อที่แสดงสำหรับคอลัมน์และตาราง นอกเหนือจากชื่อตรรกะที่ไม่ซ้ำกัน ชื่อที่แสดงมักจะใช้งานง่ายกว่ามาก ดังเช่นในกรณีนี้ แต่ก็มีคุณภาพที่สำคัญอีกประการหนึ่งที่สามารถแปลเป็นภาษาท้องถิ่นได้ หากคุณมีกลุ่มคนที่พูดได้หลายภาษา สมาชิกในกลุ่มคนแต่ละคนสามารถดูชื่อตารางและชื่อฟิลด์ในภาษาของตนเองได้ ในทุกกรณีการใช้งาน Power Fx ทำให้แน่ใจว่าชื่อตรรกะที่ถูกต้องถูกส่งไปยังฐานข้อมูลโดยอัตโนมัติ
ไม่มีโค้ด
คุณไม่จําเป็นต้องอ่านหรือเขียน Power Fx เพื่อเริ่มแสดงตรรกะ คุณสามารถแสดงการกําหนดค่าและตรรกะจํานวนมากผ่านสวิตช์และตัวสร้าง UI อย่างง่าย เครื่องมือที่ไม่ต้องเขียนโค้ดเหล่านี้ถูกสร้างขึ้นเพื่ออ่านและเขียน Power Fx ดังนั้นจึงมีห้องใหญ่มากมายสําหรับใครบางคนที่จะไปต่อ อย่างไรก็ตามเครื่องมือที่ไม่ต้องเขียนโค้ดจะไม่แสดงออกทั้งหมดของภาษาเต็ม แม้ว่าคุณจะใช้ตัวสร้างโค้ดแต่แถบสูตรจะอยู่ด้านหน้าและกึ่งกลางใน Power Apps เพื่อให้ความรู้แก่ผู้สร้างเกี่ยวกับสิ่งที่กําลังดําเนินการในนามของพวกเขาเพื่อให้พวกเขาสามารถเริ่มเรียนรู้ Power Fx ได้
ลองดูตัวอย่างบางอย่าง ใน Power Apps แผงคุณสมบัติจะมีสวิตช์และปุ่มไม่มีรหัสสำหรับคุณสมบัติของตัวควบคุม ในทางปฏิบัติ ค่าคุณสมบัติส่วนใหญ่เป็นแบบคงที่ คุณสามารถใช้ตัวสร้างสีเพื่อเปลี่ยนสีพื้นหลังของ Gallery สังเกตว่าแถบสูตรแสดงถึงการเปลี่ยนแปลงนี้ โดยอัปเดตสูตรเป็นการเรียก RGBA อื่น คุณสามารถไปที่แถบสูตรได้ตลอดเวลา และดําเนินการเปลี่ยนแปลงขั้นตอนนี้เพิ่มเติม - ในตัวอย่างนี้ โดยใช้ ColorFade เพื่อปรับสี คุณสมบัติสียังคงปรากฏในแผงคุณสมบัติ แต่ไอคอน fx ปรากฏบนโฮเวอร์ และคุณจะถูกนำไปที่แถบสูตร นี่จะใช้ได้ในสองวิธี: การลบการเรียก ColorFade จะส่งคืนสีเป็นสิ่งที่แผงคุณสมบัติสามารถเข้าใจได้ และคุณสามารถใช้อีกครั้งเพื่อกำหนดสีได้
นี่เป็นตัวอย่างที่ซับซ้อนมากขึ้น แกลเลอรีแสดงรายชื่อพนักงานจาก Dataverse Dataverse ให้มุมมองข้อมูลตาราง คุณสามารถเลือกหนึ่งมุมมองจากมุมมองเหล่านี้และสูตรจะเปลี่ยนเพื่อใช้ Filter ฟังก์ชันกับชื่อมุมมองนี้ คุณสามารถใช้เมนูดรอปดาวน์สองรายการเพื่อกดในตารางและมุมมองที่ถูกต้องโดยไม่ต้องสัมผัสแถบสูตร แต่สมมติว่าคุณต้องการดำเนินการต่อและเพิ่มการจัดเรียง คุณสามารถเพิ่มฟังก์ชันนั้นในแถบสูตร และบานหน้าต่างคุณสมบัติจะแสดงไอคอน fx อีกครั้งและทําการปรับเปลี่ยนไปยังแถบสูตรโดยตรง และอีกครั้งถ้าคุณลดความซับซ้อนของสูตรไปยังสิ่งที่แผงคุณสมบัติสามารถอ่านและเขียนได้จะสามารถใช้ได้
ตัวอย่างเหล่านี้เป็นเรื่องง่าย Power Fx สร้างภาษาที่ยอดเยี่ยมสําหรับการอธิบายการโต้ตอบแบบไม่มีโค้ด ซึ่งรัดกุม มีประสิทธิภาพ และง่ายต่อการแยกวิเคราะห์ มันมีสํานักงานใหญ่ที่จําเป็นโดยมักมี "ไม่มีหน้าผา" ถึงรหัสต่ํา
โค้ดมืออาชีพ
ในบางครั้งผู้สร้างโค้ดต่ําสร้างโซลูชันที่ต้องการความช่วยเหลือจากผู้เชี่ยวชาญหรือนักพัฒนามืออาชีพดูแลและปรับปรุง ผู้เชี่ยวชาญยังชื่นชมว่าการพัฒนาแบบโค้ดเล็กน้อยสามารถทำได้ง่ายกว่า เร็วกว่า และเสียค่าใช้จ่ายน้อยกว่าการสร้างเครื่องมือระดับมืออาชีพ ไม่ใช่ทุกสถานการณ์ที่ต้องการ Visual Studio เต็มประสิทธิภาพ
ผู้เชี่ยวชาญต้องการใช้เครื่องมือระดับมืออาชีพเพื่อให้เกิดประสิทธิผลสูงสุด คุณสามารถจัดเก็บสูตร Power Fx ในไฟล์ต้นฉบับ YAML ซึ่งง่ายต่อการแก้ไขโดยใช้ Visual Studio Code Visual Studio หรือตัวแก้ไขข้อความอื่น ๆ การจัดเก็บสูตรในไฟล์ YAML ช่วยให้คุณสามารถวาง Power Fx ภายใต้ตัวควบคุมแหล่งข้อมูลได้โดยใช้ GitHub Azure DevOps หรือระบบควบคุมซอร์สโค้ดอื่น ๆ
Power Fx รองรับส่วนประกอบตามสูตรสำหรับการแบ่งปันและนำกลับมาใช้ใหม่ รองรับพารามิเตอร์ไปยังคุณสมบัติคอมโพเนนต์ช่วยให้สามารถสร้างฟังก์ชันที่ผู้ใช้กําหนดเองบริสุทธิ์ด้วยการปรับปรุงเพิ่มเติมในทาง
ยอกจากนี้ Power Fx เป็นเลิศในการรวมส่วนประกอบและบริการที่สร้างขึ้นโดยผู้เชี่ยวชาญ ตัวเชื่อมต่อแบบพร้อมใช้งานทันทีมีการเข้าถึงแหล่งข้อมูลและบริการบนเว็บหลายร้อยรายการ ตัวเชื่อมต่อแบบกําหนดเองเปิดใช้งาน Power Fx เพื่อพูดคุยกับบริการเว็บ REST ใด ๆ คอมโพเนนต์โค้ดเปิดใช้งาน Power Fx เพื่อโต้ตอบกับ JavaScript แบบกําหนดเองเต็มรูปแบบบนหน้าจอและหน้า
หลักการออกแบบ
แบบธรรมดา
Power Fx ถูกออกแบบมาเพื่อกําหนดเป้าหมายผู้ชมผู้สร้างซึ่งสมาชิกไม่ได้รับการฝึกฝนเป็นนักพัฒนา ทุกที่ที่เป็นไปได้ภาษาใช้ความรู้ที่ผู้ชมรายนี้รู้จักหรือสามารถรับได้อย่างรวดเร็ว จำนวนแนวคิดที่ต้องใช้ในการประสบความสำเร็จจะถูกจำกัดไว้ให้น้อยที่สุด
ความเรียบง่ายยังดีสำหรับนักพัฒนา สําหรับผู้ชมของนักพัฒนา Power Fx มีจุดมุ่งหมายที่จะเป็นภาษาที่มีรหัสต่ําซึ่งลดเวลาที่จําเป็นในการสร้างโซลูชัน
ความสอดคล้องของ Excel
ภาษา Microsoft Power Fx ยืมอย่างมากจากภาษาสูตรของ Excel ซึ่งจะใช้ประโยชน์จากความรู้และประสบการณ์ Excel จากผู้สร้างหลายคนที่ใช้ Excel ด้วย ชนิด ตัวดำเนินการ และความหมายของฟังก์ชันใกล้เคียงกับ Excel มากที่สุด
ถ้า Excel ไม่มีคําตอบ Power Fx จะมองหาคําตอบต่อไปสําหรับ SQL หลังจาก Excel แล้ว SQL เป็นภาษาเชิงประกาศที่ใช้กันมากที่สุดในลำดับถัดไป และสามารถให้คำแนะนำเกี่ยวกับการดำเนินการกับข้อมูลและการพิมพ์ที่ชัดเจนซึ่ง Excel ไม่มี
แบบประกาศ
ผู้สร้างอธิบาย สิ่ง ที่พวกเขาต้องการให้ตรรกะของพวกเขาทำ ไม่ใช่ วิธีการ หรือ เวลา ที่จะทำอย่างแน่นอน วิธีนี้ช่วยให้คอมไพเลอร์ปรับให้เหมาะสมโดยการดําเนินการในแบบขนาน เลื่อนงานจนกว่าจะมีความจําเป็น และดึงข้อมูลล่วงหน้าและนําข้อมูลที่แคชไว้กลับมาใช้ใหม่
ตัวอย่างเช่น ในแผ่นงาน Excel ผู้เขียนจะกําหนดความสัมพันธ์ระหว่างเซลล์ แต่ Excel ตัดสินใจว่าจะประเมินสูตรเมื่อใดและลําดับใด ในทํานองเดียวกัน คุณสามารถนึกภาพสูตรในแอปเป็น "การคํานวณใหม่" ตามที่จําเป็นตามการดําเนินการของผู้ใช้ การเปลี่ยนแปลงฐานข้อมูล หรือเหตุการณ์ตัวจับเวลา
ใช้งานได้
ใช้ฟังก์ชันบริสุทธิ์ที่ไม่มีผลข้างเคียง วิธีการนี้ส่งผลให้มีตรรกะที่ง่ายต่อการทําความเข้าใจและทําให้คอมไพเลอร์มีอิสระมากที่สุดในการปรับให้เหมาะสม
ไม่เหมือนกับ Excel แอปตามลักษณะของแอปเหล่านี้ทํารัฐกลายพันธุ์ ตัวอย่างเช่น แอปมีปุ่มที่บันทึกการเปลี่ยนแปลงไปยังระเบียนในฐานข้อมูล ดังนั้นบางฟังก์ชันจึงมีผลข้างเคียง แม้ว่าจะจํากัดผลข้างเคียงเหล่านี้ให้มากที่สุดเท่าที่จะทําได้
องค์ประกอบ
ถ้าเป็นไปได้ ให้เพิ่มฟังก์ชันการทํางานที่ประกอบด้วยฟังก์ชันการทํางานที่มีอยู่ให้ดี คุณสามารถแยกย่อยสลายฟังก์ชันที่มีประสิทธิภาพออกเป็นส่วนเล็ก ๆ ที่คุณสามารถใช้ได้ง่ายยิ่งขึ้นได้อย่างอิสระ
ตัวอย่างเช่น การควบคุม แกลลอรี่ ไม่มีคุณสมบัติ Sort และ Filter ที่แยกจากกัน แต่คุณเขียน Sort ฟังก์ชัน และ Filter เข้าด้วยกันเป็นคุณสมบัติเดียว Items แทน คุณเลเยอร์ UI สําหรับการแสดง Sort และ Filter ลักษณะการทํางานที่ด้านบนของ Items คุณสมบัติ โดยใช้ตัวแก้ไขแบบสองทิศทางสําหรับคุณสมบัตินี้
แบบแข็งแรง
ชนิดของค่าทั้งหมดจะถูกทราบในเวลาการคอมไพล์ วิธีนี้ช่วยให้สามารถตรวจหาข้อผิดพลาดและคําแนะนําที่หลากหลายขณะเขียนได้ตั้งแต่เนิ่นๆ
ชนิดโพลีมอฟิกได้รับการสนับสนุน แต่ก่อนที่คุณจะสามารถใช้งานได้คุณต้องปักหมุดประเภทของพวกเขาเป็นประเภทคงที่และต้องทราบประเภทนั้นในเวลาการคอมไพล์ ฟังก์ชัน IsType และ AsType มีไว้สำหรับการทดสอบและชนิดการหล่อ
การอนุมานชนิด
ชนิดได้มาจากการใช้งานโดยไม่ได้รับการประกาศ ตัวอย่างเช่น การตั้งค่าตัวแปรเป็นตัวเลขจะส่งผลให้ชนิดของตัวแปรถูกกำหนดเป็นตัวเลข
การใช้งานชนิดที่ขัดแย้งกันส่งผลให้เกิดข้อผิดพลาดเวลารวบรวม
ตัวคั่นทศนิยมที่คำนึงถึงสถานที่
บางภูมิภาคของโลกใช้จุด (.) เป็นตัวแบ่งทศนิยม ขณะที่ภูมิภาคอื่นใช้จุลภาค (,) Excel เป็นไปตามแบบแผนระดับภูมิภาคนี้ ภาษาการเขียนโปรแกรมอื่น ๆ โดยทั่วไปใช้จุดมาตรฐาน (.) เป็นตัวคั่นทศนิยมสําหรับผู้ใช้ทั้งหมดทั่วโลก เพื่อให้ผู้สร้างทุกระดับเข้าถึงได้มากที่สุด สิ่งสำคัญคือ 3,14 เป็นเลขฐานสิบสำหรับคนในฝรั่งเศสที่ใช้ไวยากรณ์นั้นมาตลอดชีวิต
ตัวเลือกของตัวคั่นทศนิยมมีผลต่อการเรียงซ้อนบนตัวคั่นรายการ ซึ่งใช้สำหรับอาร์กิวเมนต์การเรียกฟังก์ชัน และตัวดำเนินการเกี่ยวโยง
| ตัวคั่นทศนิยมของภาษาของผู้เขียน | ตัวคั่นทศนิยมของ Power Fx | ตัวคั่นรายการของ Power Fx | ตัวดำเนินการการเกี่ยวโยงของ Power Fx |
|---|---|---|---|
| . (จุด) | . (จุด) | , (เครื่องหมายจุลภาค) | - (อัฒภาค) |
| , (เครื่องหมายจุลภาค) | , (เครื่องหมายจุลภาค) | - (อัฒภาค) | - (เครื่องหมายอัฒภาคคู่) |
ข้อมูลเพิ่มเติม: การสนับสนุนทั่วโลก
ไม่ใช่เชิงวัตถุ
Excel ไม่ใช่เชิงวัตถุ และไม่ใช่ Power Fx ตัวอย่างเช่น ในบางภาษา ความยาวของสตริงจะแสดงเป็นคุณสมบัติของสตริง เช่น "สวัสดี ทุกท่าน".length ใน JavaScript Excel และ Power Fx จะแสดงสิ่งนี้ในรูปของฟังก์ชันเป็น Len( "สวัสดี ทุกท่าน" ) แทน
ส่วนประกอบที่มีคุณสมบัติและวิธีการเป็นแบบเชิงวัตถุและ Power Fx ทำงานร่วมกับพวกเขาได้อย่างง่ายดาย แต่ถ้าเป็นไปได้ ควรใช้วิธีการทํางานมากกว่า
ขยายได้
ผู้สร้างสามารถสร้างส่วนประกอบและหน้าที่ของตนได้โดยใช้ Power Fx นักพัฒนาสามารถสร้างส่วนประกอบและฟังก์ชันได้โดยการเขียน JavaScript
เป็นมิตรกับนักพัฒนา
แม้ว่าผู้สร้างจะเป็นเป้าหมายหลัก แต่ก็พยายามเป็นมิตรกับนักพัฒนาทุกที่ที่เป็นไปได้ หากไม่ขัดแย้งกับหลักการออกแบบที่อธิบายไว้ก่อนหน้านี้ให้ทําสิ่งต่าง ๆ ในลักษณะที่นักพัฒนาชื่นชม ตัวอย่างเช่น Excel ไม่มีความสามารถในการเพิ่มข้อคิดเห็น ดังนั้นให้ใช้บรรทัดที่เหมือนกับ C และข้อคิดเห็นแบบอินไลน์
วิวัฒนาการของภาษา
การพัฒนาภาษาโปรแกรมเป็นสิ่งที่จำเป็นและยุ่งยาก ทุกคน—โดยชอบธรรม—มีความกังวลว่าการเปลี่ยนแปลง ไม่ว่าจะมีเจตนาดีเพียงใดก็ตาม อาจทำลายรหัสที่มีอยู่และต้องการให้ผู้ใช้เรียนรู้รูปแบบใหม่ Power Fx ใช้ความเข้ากันได้ย้อนหลังอย่างจริงจัง แต่ทีม Power Fx เชื่ออย่างหนักว่าพวกเขาจะไม่ได้รับความเข้ากันได้ในครั้งแรกเสมอไปและชุมชนสามารถเรียนรู้สิ่งที่ดีที่สุดได้ ภาษาโปรแกรมต้องพัฒนาและ Power Fx ได้รับการออกแบบมาเพื่อสนับสนุนการพัฒนาภาษาตั้งแต่เริ่มต้น
บันทึกเอกสาร Power Fx ทุกฉบับจะมีตราประทับเวอร์ชันภาษา หากทีม Power Fx ต้องการทําการเปลี่ยนแปลงที่เข้ากันไม่ได้ พวกเขาจะเขียนสิ่งที่พวกเขาเรียกว่า "ตัวแปลงที่เข้ากันได้กลับ" ซึ่งจะเขียนสูตรใหม่โดยอัตโนมัติในครั้งถัดไปที่มีการแก้ไข ถ้าการเปลี่ยนแปลงเป็นสิ่งสําคัญที่ทีมจําเป็นต้องให้ความรู้แก่ผู้ใช้ แอปจะแสดงข้อความพร้อมลิงก์ไปยังเอกสาร โดยใช้สิ่งอํานวยความสะดวกนี้ Power Fx ยังคงสามารถโหลดแอปที่สร้างขึ้น ด้วยเวอร์ชันแสดงตัวอย่างของ Power Apps จากหลายปีที่ผ่านมา แม้จะมีการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นตั้งแต่นั้นมา
ตัวอย่างเช่น ทีม Power Fx ได้ ShowError แนะนําฟังก์ชันเพื่อแสดงแบนเนอร์ข้อผิดพลาดที่มีพื้นหลังสีแดง
ผู้ใช้ชอบมัน แต่พวกเขาก็ยังขอให้แสดงแบนเนอร์ความสําเร็จ (พื้นหลังสีเขียว) หรือแบนเนอร์ที่ให้ข้อมูล (พื้นหลังสีน้ําเงิน) ดังนั้นทีมจึงมีฟังก์ชันทั่วไป Notify มากกว่าที่ใช้อาร์กิวเมนต์ที่สองสําหรับการแจ้งเตือนประเภทหนึ่ง ทีมสามารถเพิ่มNotifyและเก็บไว้ShowErrorแบบเดิมได้ แต่จะแทนที่ShowErrorด้วยNotify พวกเขาลบฟังก์ชันที่ก่อนหน้านี้อยู่ในการผลิตและแทนที่ด้วยฟังก์ชันอื่น เนื่องจากอาจมีสองวิธีในการดําเนินการเดียวกัน การเปลี่ยนแปลงนี้อาจทําให้เกิดความสับสน โดยเฉพาะอย่างยิ่งสําหรับผู้ใช้ใหม่ และที่สําคัญที่สุดคือจะมีการเพิ่มความซับซ้อน ไม่มีใครร้องเรียน ทุกคนชื่นชมการเปลี่ยนแปลง และจากนั้น จึงย้ายไปยังคุณลักษณะการแจ้งเตือนถัดไป
นี่คือลักษณะของแอปเดียวกันเมื่อโหลดลงในรุ่นล่าสุดของ Power Apps ผู้ใช้ไม่จำเป็นต้องดำเนินการใดๆ เพื่อทำให้การเปลี่ยนแปลงนี้เกิดขึ้น โดยจะเกิดขึ้นโดยอัตโนมัติเมื่อเปิดแอป
ด้วยการใช้สิ่งอํานวยความสะดวกนี้ Power Fx สามารถพัฒนาได้เร็วขึ้นและก้าวร้าวมากกว่าภาษาการเขียนโปรแกรมส่วนใหญ่
ไม่มีค่าที่ไม่ได้กำหนด
ภาษาบางภาษา เช่น JavaScript ใช้แนวคิดของค่าที่ ไม่ได้กำหนด สำหรับตัวแปรที่ยกเลิกการเตรียมใช้งานหรือคุณสมบัติที่ขาดหายไป เพื่อความง่าย Power Fx หลีกเลี่ยงแนวคิดนี้ อินสแตนซ์ที่ไม่ได้ถูกกำหนดเป็นภาษาอื่น จะถือว่าเป็นข้อผิดพลาดหรือค่าว่าง ตัวอย่างเช่น ตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้นทั้งหมดจะเริ่มต้นด้วยค่าว่าง ชนิดข้อมูลทั้งหมดสามารถรับค่าว่างได้
บทความที่เกี่ยวข้อง
ประเภทข้อมูล
ตัวดำเนินการและตัวระบุ
ตาราง
ตัวแปร
ตรรกะเชิงบังคับ
การสนับสนุนทั่วโลก
ไวยากรณ์การแสดงออก
ไวยากรณ์สูตร YAML
สูตรในแอปแคนวาส