อ่านในภาษาอังกฤษ

แชร์ผ่าน


ภาพรวมของ Microsoft Power Fx

Power Fx เป็นภาษาแบบเขียนโค้ดเล็กน้อยที่จะใช้ทั่วทั้ง Microsoft Power Platform ซึ่งเป็นภาษาการเขียนโปรแกรมที่มีวัตถุประสงค์ทั่วไป แบบพิมพ์รัดกุม เปิดเผย และใช้งานได้จริง

Power Fx แสดงเป็นข้อความที่เป็นมิตรต่อมนุษย์ ซึ่งเป็นภาษาแบบเขียนโค้ดเล็กน้อยที่ผู้สร้างสามารถใช้งานได้โดยตรงในแถบสูตรเหมือน Excel หรือหน้าต่างข้อความ Visual Studio Code "ต่ำ" ในแบบเขียนโค้ดเล็กน้อย เกิดจากลักษณะของภาษาที่กระชับและเรียบง่าย ซึ่งทำให้งานเขียนโปรแกรมทั่วไปเป็นเรื่องง่ายสำหรับทั้งผู้สร้างและผู้พัฒนา ซึ่งช่วยให้การพัฒนาเต็มรูปแบบจากไม่มีโค้ดสำหรับผู้ที่ไม่เคยตั้งโปรแกรมมาก่อนจนถึง "โค้ดระดับสูง" สำหรับมืออาชีพที่ช่ำชอง โดยไม่ต้องเรียนรู้หรือเขียนซ้ำระหว่างนั้น ซึ่งทำให้ทีมต่างๆ สามารถทำงานร่วมกันและประหยัดเวลาและค่าใช้จ่าย

หมายเหตุ

  • Microsoft Power Fx เป็นชื่อใหม่สำหรับภาษาสูตรสำหรับแอปพื้นที่ทำงานใน Power Apps ภาพรวมนี้และบทความที่เกี่ยวข้องอยู่ระหว่างดำเนินการ ในขณะที่เราแยกภาษาจากแอปพื้นที่ทำงาน รวมเข้ากับผลิตภัณฑ์ Microsoft Power Platform อื่นๆ และทำให้พร้อมใช้งานในรูปแบบโอเพนซอร์ส หากต้องการเรียนรู้เพิ่มเติมและสัมผัสภาษาวันนี้ ให้เริ่มด้วย เริ่มต้นใช้งานสูตรในแอปพื้นที่ทำงาน ในคู่มือ Power Apps และลงทะเบียน Power Apps รุ่นทดลองใช้ ฟรี
  • ในบทความนี้ เราอ้างถึง ผู้สร้าง เมื่อเราอธิบายคุณลักษณะที่อาจใช้ในตอนท้ายของสเปกตรัมทักษะการเขียนโปรแกรม เราอ้างถึงผู้ใช้ว่าเป็น นักพัฒนา หากคุณลักษณะนี้สูงกว่าและมีแนวโน้มที่จะเกินขอบเขตของผู้ใช้ Excel ทั่วไป

Power Fx ผูกออบเจ็กต์เข้าด้วยกันด้วยสูตรที่เหมือนกระดาษคำนวณประกาศ ตัวอย่างเช่น ลองนึกถึงคุณสมบัติ มองเห็นได้ ของตัวควบคุม UI เป็นเซลล์ในเวิร์กชีต Excel พร้อมด้วยสูตรที่เกี่ยวข้องซึ่งคำนวณค่าตามคุณสมบัติของตัวควบคุมอื่นๆ ตรรกะของสูตรจะคำนวณค่าใหม่โดยอัตโนมัติ ซึ่งคล้ายกับวิธีการทำงานของสเปรดชีต ซึ่งส่งผลต่อการมองเห็นของตัวควบคุม

อกจากนี้ Power Fx เสนอตรรกะที่จำเป็นเมื่อจำเป็น โดยทั่วไปเวิร์กชีตไม่มีปุ่มที่สามารถส่งการเปลี่ยนแปลงไปยังฐานข้อมูลได้ แต่แอปมักจะมี ภาษานิพจน์เดียวกันนี้ใช้สำหรับทั้งตรรกะเชิงประกาศและแบบจำเป็น

Power Fx จะเปิดให้บริการเป็นซอฟต์แวร์โอเพนซอร์ส ขณะนี้ได้รวมเข้ากับแอปพื้นที่ทำงานแล้ว และเรากำลังอยู่ในขั้นตอนการดึงออกจาก Power Apps เพื่อใช้ในผลิตภัณฑ์ Microsoft Power Platform อื่นๆ และเป็นโอเพนซอร์ส ข้อมูลเพิ่มเติม: Microsoft Power Fx บน GitHub

บทความนี้เป็นภาพรวมของภาษาและหลักการออกแบบ เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Power Fx ให้ดูบทความต่อไปนี้:

นึกถึงสเปรดชีต

จะเกิดอะไรขึ้น ถ้าคุณสามารถสร้างแอปได้อย่างง่ายดายเหมือนคุณสร้างเวิร์กชีตใน 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 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 สำหรับการควบคุมป้ายชื่อแต่ละรายการ

แถบเลื่อนสี Power Fx

สิ่งที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้คือ มีการแยกออกจากสิ่งที่เกิดขึ้นสำหรับสี 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 ที่เทียบเท่ากัน

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 หรือโปรแกรมแก้ไขข้อความอื่น ๆ และเปิดใช้งาน Power Fx ให้อยู่ภายใต้การควบคุมต้นทางด้วย GitHub, Azure DevOps หรือระบบควบคุมโค้ดต้นฉบับอื่นๆ

Pro code Visual Studio Code

Pro code GitHub

Power Fx รองรับส่วนประกอบตามสูตรสำหรับการแบ่งปันและนำกลับมาใช้ใหม่ เราได้ประกาศการสนับสนุนพารามิเตอร์สำหรับคุณสมบัติของส่วนประกอบ ซึ่งทำให้สามารถสร้างฟังก์ชันที่ผู้ใช้กำหนดเองเท่านั้นได้โดยมีการปรับปรุงเพิ่มเติมระหว่างทาง

ยอกจากนี้ Power Fx เป็นเลิศในการรวมส่วนประกอบและบริการที่สร้างขึ้นโดยผู้เชี่ยวชาญ ตัวเชื่อมต่อที่พร้อมใช้งานทันทีช่วยให้เข้าถึงแหล่งข้อมูลและบริการเว็บหลายร้อยแห่ง ตัวเชื่อมต่อแบบกำหนดเองเปิดใช้งาน Power Fx เพื่อพูดคุยกับบริการเว็บ REST และส่วนประกอบโค้ดที่เปิดใช้งาน Power Fx เพื่อโต้ตอบกับ JavaScript ที่กำหนดเองอย่างสมบูรณ์บนหน้าจอและหน้า

หลักการออกแบบ

แบบธรรมดา

Power Fx ออกแบบมาเพื่อกำหนดเป้าหมายผู้ชมที่เป็นผู้สร้าง ซึ่งสมาชิกยังไม่ได้รับการฝึกอบรมให้เป็นนักพัฒนา ทุกที่เป็นไปได้ เราใช้ความรู้ที่ว่าผู้ชมนี้จะรู้อยู่แล้วหรือสามารถรับได้อย่างรวดเร็ว จำนวนแนวคิดที่ต้องใช้ในการประสบความสำเร็จจะถูกจำกัดไว้ให้น้อยที่สุด

ความเรียบง่ายยังดีสำหรับนักพัฒนา สำหรับผู้ชมที่เป็นนักพัฒนา เรามุ่งมั่นที่จะเป็นภาษาโค้ดต่ำที่ลดเวลาที่ต้องใช้ในการสร้างโซลูชัน

ความสอดคล้องของ Excel

ภาษา Microsoft Power Fx ยืมอย่างมากจากภาษาสูตรของ Excel เราพยายามใช้ประโยชน์จากความรู้และประสบการณ์ของ Excel จากผู้สร้างจำนวนมากที่ใช้ Excel เช่นกัน ชนิด ตัวดำเนินการ และความหมายของฟังก์ชันใกล้เคียงกับ Excel มากที่สุด

หาก Excel ไม่มีคำตอบ ต่อไปเราจะดู 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 ตัวอย่างเช่น ในบางภาษา ความยาวของสตริงจะแสดงเป็นคุณสมบัติของสตริง เช่น "Hello World".length ใน JavaScript Excel และ Power Fx จะแสดงสิ่งนี้ในรูปของฟังก์ชันเป็น Len( "Hello World" ) แทน

ส่วนประกอบที่มีคุณสมบัติและวิธีการเป็นแบบเชิงวัตถุและ Power Fx ทำงานร่วมกับพวกเขาได้อย่างง่ายดาย แต่ถ้าเป็นไปได้ เราชอบวิธีการทำงานมากกว่า

ขยายได้

ผู้สร้างสามารถสร้างส่วนประกอบและหน้าที่ของตนได้โดยใช้ Power Fx นักพัฒนาสามารถสร้างส่วนประกอบและฟังก์ชันได้โดยการเขียน JavaScript

เป็นมิตรกับนักพัฒนา

แม้ว่าผู้สร้างจะเป็นเป้าหมายหลักของเรา แต่เราพยายามที่จะเป็นมิตรกับนักพัฒนาในทุกที่ที่ทำได้ หากไม่ขัดแย้งกับหลักการออกแบบที่อธิบายไว้ก่อนหน้านี้ เราจะทำสิ่งต่างๆ ในแบบที่นักพัฒนาจะพึงพอใจ ตัวอย่างเช่น Excel ไม่มีความสามารถในการเพิ่มความคิดเห็น ดังนั้น เราจึงใช้รายการแบบ C และความคิดเห็นแบบอินไลน์

วิวัฒนาการของภาษา

การพัฒนาภาษาโปรแกรมเป็นสิ่งที่จำเป็นและยุ่งยาก ทุกคน—โดยชอบธรรม—มีความกังวลว่าการเปลี่ยนแปลง ไม่ว่าจะมีเจตนาดีเพียงใดก็ตาม อาจทำลายรหัสที่มีอยู่และต้องการให้ผู้ใช้เรียนรู้รูปแบบใหม่ Power Fx ให้ความสำคัญกับความเข้ากันได้แบบย้อนหลังอย่างจริงจัง แต่เรายังเชื่อมั่นอย่างยิ่งว่าเราไม่สามารถทำให้ถูกต้องได้ในครั้งแรกเสมอไป และเราจะร่วมกันเรียนรู้สิ่งที่ดีที่สุดในฐานะชุมชน เราต้องวิวัฒนาการและรองรับที่ออกแบบโดย Power Fx ให้วิวัฒนาการทางภาษาตั้งแต่เริ่มต้น

ตราประทับรุ่นภาษารวมอยู่ในทุกเอกสาร Power Fx ที่บันทึกไว้ หากเราต้องการทำการเปลี่ยนแปลงที่เข้ากันไม่ได้ เราจะเขียนสิ่งที่เราเรียกว่า "ตัวแปลงความเข้ากันได้ย้อนกลับ" ซึ่งจะเขียนสูตรใหม่โดยอัตโนมัติในครั้งถัดไปที่มีการแก้ไข หากการเปลี่ยนแปลงเป็นสิ่งสำคัญที่เราต้องให้ความรู้แก่ผู้ใช้ เราจะแสดงข้อความพร้อมลิงก์ไปยังเอกสารด้วย เมื่อใช้สิ่งอำนวยความสะดวกนี้ เรายังสามารถโหลดแอปที่สร้างขึ้นด้วยเวอร์ชันพรีวิวของ Power Apps ในหลายปีที่ผ่านมา แม้จะมีการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นตั้งแต่นั้นมา

ตัวอย่างเช่น เราได้แนะนำฟังก์ชัน ShowError เพื่อแสดงแบนเนอร์ข้อผิดพลาดที่มีพื้นหลังสีแดง

แสดงข้อผิดพลาด

ผู้ใช้ชื่นชอบ แต่พวกเขายังขอวิธีแสดงแบนเนอร์ความสำเร็จ (พื้นหลังสีเขียว) หรือแบนเนอร์ที่ให้ข้อมูล (พื้นหลังสีน้ำเงิน) ดังนั้น เราจึงมาพร้อมกับฟังก์ชัน Notify แบบทั่วไปมากขึ้นที่ใช้อาร์กิวเมนต์ที่สองสำหรับชนิดการแจ้งเตือน เราสามารถเพิ่ม Notify และเก็บ ShowError ในแบบที่เป็นอยู่ได้เท่านั้น แต่เราแทนที่ ShowError ด้วย Notify แทน เรานำฟังก์ชันที่เคยใช้งานจริงออก และแทนที่ด้วยฟังก์ชันอื่น เนื่องจากจะมีสองวิธีในการทำสิ่งเดียวกัน สิ่งนี้จึงทำให้เกิดความสับสน—โดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ใหม่—และที่สำคัญที่สุด นั่นจะเพิ่มความซับซ้อน ไม่มีใครร้องเรียน ทุกคนชื่นชมการเปลี่ยนแปลง และจากนั้น จึงย้ายไปยังคุณลักษณะการแจ้งเตือนถัดไป

นี่คือลักษณะของแอปเดียวกันเมื่อโหลดลงในรุ่นล่าสุดของ Power Apps ผู้ใช้ไม่จำเป็นต้องดำเนินการใดๆ เพื่อทำให้การเปลี่ยนแปลงนี้เกิดขึ้น โดยจะเกิดขึ้นโดยอัตโนมัติเมื่อเปิดแอป

ฟังก์ชันแจ้งเตือนแทนที่ ShowError

ด้วยสิ่งอำนวยความสะดวกนี้ Power Fx สามารถพัฒนาได้เร็วและรุนแรงกว่าภาษาโปรแกรมส่วนใหญ่

ไม่มีค่าที่ไม่ได้กำหนด

ภาษาบางภาษา เช่น JavaScript ใช้แนวคิดของค่าที่ ไม่ได้กำหนด สำหรับตัวแปรที่ยกเลิกการเตรียมใช้งานหรือคุณสมบัติที่ขาดหายไป เพื่อความเรียบง่าย เราจึงหลีกเลี่ยงแนวคิดนี้ อินสแตนซ์ที่ไม่ได้ถูกกำหนดเป็นภาษาอื่น จะถือว่าเป็นข้อผิดพลาดหรือค่าว่าง ตัวอย่างเช่น ตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้นทั้งหมดจะเริ่มต้นด้วยค่าว่าง ชนิดข้อมูลทั้งหมดสามารถรับค่าว่างได้

ประเภทข้อมูล
ตัวดำเนินการและตัวระบุ
ตาราง
ตัวแปร
ตรรกะเชิงบังคับ
การสนับสนุนทั่วโลก
ไวยากรณ์การแสดงออก
ไวยากรณ์สูตร YAML
สูตรในแอปพลิเคชัน Canvas