แชร์ผ่าน


AsType และ IsType ฟังก์ชัน

ฟังก์ชัน นำไปใช้กับ
AsType แอปพื้นที่ทํางานแอปที่ขับเคลื่อนด้วยแบบจําลอง Copilot Studio ฟังก์ชัน Power Platform CLI Dataverse Power Pages
IsType ฟังก์ชันแอปพื้นที่ทํางานแอปที่ขับเคลื่อนด้วยแบบจําลอง Copilot Studio Dataverse ใน Power Pages

ตรวจสอบว่าการอ้างอิงเรกคอร์ดเป็นชนิดตารางเฉพาะ (IsType) และถือว่าการอ้างอิงเป็นชนิดนั้น (AsType) หรือไม่

หมายเหตุ

คําสั่ง pac CLI pac power-fx ไม่สนับสนุนIsType

Description

AsTypeฟังก์ชัน และ IsType สามารถใช้เพื่อแปลงการอ้างอิงเรกคอร์ด (ตัวอย่างเช่น การค้นหา polymorphic ใน Dataverse) และค่าไดนามิกเป็นค่าที่พิมพ์ซึ่งสามารถใช้ได้โดยตรง

การอ้างอิงเรกคอร์ด

อ่าน ทำความเข้าใจการอ้างอิงเรกคอร์ดและการค้นหา polymorphic สำหรับการแนะนำที่กว้างขึ้นและรายละเอียดเพิ่มเติม

ฟิลด์การค้นหามักจะอ้างอิงถึงเรกคอร์ดในตารางใดตารางหนึ่ง เนื่องจากชนิดของตารางมีการกำหนดไว้อย่างดี จึงสามารถเข้าถึงฟิลด์ของการค้นหาได้โดยใช้เครื่องหมายจุดอย่างง่าย ตัวอย่างเช่น First( Accounts ).'Primary Contact'.'Full Name' เริ่มจากตาราง บัญชีลูกค้าองค์กร ไปที่เรกคอร์ด ผู้ติดต่อหลัก ในตาราง ผู้ติดต่อ และแยกฟิลด์ ชื่อเต็ม

Microsoft Dataverse ยังสนับสนุนฟิลด์การค้นหาแบบ polymorphic ซึ่งสามารถอ้างถึงเรกคอร์ดจากชุดของตารางได้ดังในตัวอย่างเหล่านี้

ฟิลด์การค้นหา สามารถอ้างอิงไปยัง
เจ้าของ ผู้ใช้ หรือ Teams
ลูกค้า บัญชี หรือ ผู้ติดต่อ
เกี่ยวกับ บัญชีผู้ติดต่อบทความความรู้ ฯลฯ

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

ฟังก์ชันจะ IsType ตรวจสอบว่าการอ้างอิงเรกคอร์ดอ้างอิงถึงชนิดตารางที่ระบุหรือไม่ ฟังก์ชันส่งคืน Boolean TRUE หรือ FALSE

ฟังก์ชันAsTypeจะถือว่าการอ้างอิงเรกคอร์ดเป็นชนิดตารางเฉพาะหรือที่เรียกว่าการคัดเลือก คุณใช้ผลลัพธ์ราวกับว่าเป็นระเบียนของตารางและใช้สมมตบัตร Record.Field เพื่อเข้าถึงเขตข้อมูลทั้งหมดของระเบียนนั้น ถ้าการอ้างอิงไม่ใช่ชนิดเฉพาะ ข้อผิดพลาดจะเกิดขึ้น

ใช้ฟังก์ชันเหล่านี้ร่วมกันเพื่อตรวจสอบชนิดตารางของเรกคอร์ดก่อน จากนั้นถือว่าเป็นเรกคอร์ดของชนิดนั้นเพื่อให้เขตข้อมูลพร้อมใช้งาน:

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

คุณจําเป็นต้องมีฟังก์ชันเหล่านี้เมื่อคุณเข้าถึงเขตข้อมูลของการอ้างอิงระเบียนเท่านั้น ตัวอย่างเช่น คุณใช้การอ้างอิงระเบียนในฟังก์ชัน Filter โดยไม่มี IsType หรือ AsType:

Filter( Accounts, Owner = First( Users ) )

ในทำนองเดียวกัน คุณสามารถใช้การอ้างอิงเรกคอร์ดด้วยฟังก์ชัน Patch:

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

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

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

สําหรับทั้งสองฟังก์ชัน ให้ระบุชนิดโดยใช้ชื่อของแหล่งข้อมูลที่เชื่อมต่อกับตาราง เพื่อให้สูตรทํางานได้ ให้เพิ่มแหล่งข้อมูลลงในแอปสําหรับชนิดต่าง ๆ ที่คุณต้องการตรวจสอบหรือแคสต์ ตัวอย่างเช่น เพิ่มตาราง ผู้ใช้ เป็นแหล่งข้อมูลถ้าคุณต้องการใช้ IsType และ AsType ด้วยการค้นหา เจ้าของ และเรกคอร์ดจากตารางนั้น เพิ่มเฉพาะแหล่งข้อมูลที่คุณใช้ในแอปของคุณ คุณไม่จําเป็นต้องเพิ่มตารางทั้งหมดที่การค้นหาสามารถอ้างอิงได้

ถ้าการอ้างอิงระเบียนว่างเปล่า ส่งกลับ IsType FALSE และAsTypeส่งกลับ ค่าว่าง ทุกฟิลด์เรกคอร์ด ว่างเปล่า จะเป็น ว่างเปล่า ด้วย

ค่าไดนามิก

สำคัญ

ค่า ไดนามิก จาก API เว็บหรือฟังก์ชัน [ParseJSON ] จําเป็นต้องแปลงเป็นค่าชนิดเฉพาะก่อนที่คุณจะสามารถใช้ได้ใน Power Fx นี่คือตัวเลือกบางรายการ:

  1. พิมพ์เขตข้อมูลในจุดที่คุณใช้โดยนัย ตัวอย่างเช่น วัตถุแปลงเป็นตัวเลขถ้าคุณใช้กับตัว + ดําเนินการ ถ้าสามารถแปลงเป็นตัวเลขได้ ตัวเลือกนี้อาจทําให้เกิดการแปลงที่ไม่คาดคิดและไม่สามารถแปลงเรกคอร์ดและตารางทั้งหมดได้
  2. กำหนดชนิดข้อมูลแต่ละฟิลด์แยกกันอย่างชัดเจนด้วยฟังก์ชัน ทศนิยม, ข้อความ, วันที่เวลา, GUID และฟังก์ชันตัวอย่างชนิดอื่น ตัวเลือกนี้คือสูตรของคุณที่บุกรุกมากที่สุดเนื่องจากคุณจําเป็นต้องทําแต่ละเขตข้อมูลแยกกัน
  3. กำหนดชนิด JSON อย่างชัดเจนด้วยอาร์กิวเมนต์ที่สองให้กับฟังก์ชัน ParseJSON ตัวเลือกนี้เป็นเรื่องง่ายและหลีกเลี่ยงความต้องการค่าไดนามิก
  4. พิมพ์ค่า ไดนามิก อย่างชัดเจนโดยใช้ AsType ฟังก์ชัน คุณยังสามารถตรวจสอบชนิดก่อนที่คุณจะลองแปลงด้วย IsType ฟังก์ชันได้

ไวยากรณ์

AsType( RecordReference, TableType )

  • RecordReference - จำเป็น การอ้างอิงระเบียน มักจะเป็นเขตข้อมูลการค้นหาที่อ้างอิงไปยังระเบียนในหลายตาราง
  • TableType - จำเป็น ตารางเฉพาะที่จะแปลงเรกคอร์ดไปเป็น

AsType( DynamicValue, TypeSpecification )

  • DynamicValue จําเป็นต้องมี ค่าไดนามิกจากฟังก์ชัน ParseJSON หรือการเรียกใช้ API
  • TypeSpecification - จำเป็น ชื่อชนิดหรือข้อมูลจําเพาะของชนิดที่คุณกําหนดด้วยฟังก์ชัน Type

IsType( RecordReference, TableType )

  • RecordReference - จำเป็น การอ้างอิงเรกคอร์ด ซึ่งมักจะเป็นฟิลด์การค้นหาที่สามารถอ้างอิงถึงเรกคอร์ดในตารางใดก็ได้
  • TableType - จำเป็น ตารางเฉพาะที่จะทดสอบ

IsType( DynamicValue, TypeSpecification )

  • DynamicValue จําเป็นต้องมี ค่าไดนามิกจากฟังก์ชัน ParseJSON หรือการเรียกใช้ API
  • TypeSpecification - จำเป็น ชื่อชนิดหรือข้อกำหนดเฉพาะของชนิดที่กำหนดด้วยฟังก์ชัน Type

ตัวอย่าง

การอ้างอิงเรกคอร์ด

ทำความเข้าใจการอ้างอิงเรกคอร์ดและการค้นหา polymorphic มีตัวอย่างมากมาย

  1. สร้างแอปพื้นที่ทำงานเปล่าสำหรับแท็บเล็ต

  2. ในบานหน้าต่างด้านซ้าย ให้เลือกข้อมูล>เพิ่มข้อมูล แล้วเพิ่มตารางบัญชีและผู้ติดต่อ

    แอปว่างที่มีแหล่งข้อมูลสองแห่ง: บัญชีลูกค้าองค์กรและผู้ติดต่อ

  3. ในบานหน้าต่างด้านซ้าย เลือก + (แทรก) >เค้าโครง>แกลเลอรีเปล่าแนวตั้ง

    แทรกตัวควบคุมแกลเลอรีด้วยเค้าโครงว่างแนวตั้ง

  4. เลือก เชื่อมต่อกับข้อมูล แล้วเลือก ผู้ติดต่อ เป็นแหล่งข้อมูล

  5. ตั้งค่าเค้าโครงแกลเลอรีเป็นชื่อเรื่องและคําบรรยาย

    เปิดตัวเลือกโครงร่างจากบานหน้าต่างคุณสมบัติ

    ตั้งค่าเค้าโครงเป็นชื่อเรื่องและคำบรรยาย

  6. ในบานหน้าต่าง ข้อมูล เปิดรายการ Title1 จากนั้นเลือก ชื่อเต็ม

    ตั้งค่าชื่อเรื่อง

  7. เลือกตัวควบคุมป้ายชื่อ Subtitle1

    ตั้งค่าคำบรรยาย

  8. ตั้งค่าคุณสมบัติ Text ของ Subtitle1 เป็นสูตรนี้:

    If( IsBlank( ThisItem.'Company Name' ), "--",
        IsType( ThisItem.'Company Name', Accounts ),
            "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
        "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
    )
    

    ตอนนี้หน้าจอเสร็จสมบูรณ์แล้ว แสดงบัญชีลูกค้าองค์กรและผู้ติดต่อที่ผสมในแกลเลอรี

    คำบรรยายในแกลเลอรีแสดงค่าเหล่านี้:

    • "-" ถ้าหาก 'ชื่อ บริษัท' เป็น ว่างเปล่า
    • "บัญชี: " และเขตข้อมูล ชื่อบัญชี จากตาราง บัญชี ถ้าเขตข้อมูล ชื่อบริษัท อ้างอิงถึงบัญชี
    • "ผู้ติดต่อ: " และเขตข้อมูล ชื่อเต็ม จากตาราง ผู้ติดต่อ ถ้าเขตข้อมูล ชื่อบริษัท อ้างอิงถึงผู้ติดต่อ

    ผลลัพธ์ของคุณอาจแตกต่างกันเนื่องจากข้อมูลตัวอย่างสามารถปรับเปลี่ยนเพื่อแสดงประเภทของผลลัพธ์ที่มากขึ้น

ค่าไดนามิก

ตัวอย่างต่อไปนี้แสดงระเบียน JSON อย่างง่ายซึ่งตีความในลักษณะต่างๆ โดย ParseJSONAsType และIsTypeใน Pac CLI Power Fx REPL

ในตัวอย่างแรกนี้ ไม่มีข้อมูลชนิดให้กับ ParseJSON ดังนั้นจึงส่งกลับค่าไดนามิก

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>

ฟิลด์จะถูกแปลงเป็นตัวเลขโดยปริยายเมื่อใช้ในบริบทตัวเลข

>> 1 + rec.a
2

อีกทางหนึ่ง ตัวอย่างนี้จะแปลงเรกคอร์ดเป็นเรกคอร์ด Power Fx ที่มีการกำหนดชนิดอย่างชัดเจนโดยมีอาร์กิวเมนต์ที่สองเป็น ParseJSON

>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}

และอีกทางเลือกหนึ่ง ตัวอย่างนี้จะแปลงระเบียนเป็นระเบียน Power Fx ที่พิมพ์โดยใช้AsType

>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}

สุดท้าย ถ้าคุณไม่แน่ใจ ตัวอย่างนี้จะทดสอบชนิดก่อนที่จะแปลงด้วย IsType ฟังก์ชัน

>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true