แชร์ผ่าน


ชนิดข้อมูล

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

บทความนี้ให้รายละเอียดสำหรับชนิดข้อมูลที่ Power Fx รองรับ เมื่อ Power Fx เชื่อมต่อกับแหล่งข้อมูลภายนอก ชนิดข้อมูลแต่ละชนิดในแหล่งที่มานั้นจะถูกแมปกับชนิดข้อมูลใน Power Fx

ชนิดข้อมูล Description ตัวอย่าง
แบบบูลีน ค่า จริง หรือ เท็จ สามารถใช้โดยตรงใน IfFilter และฟังก์ชั่นอื่นๆ โดยไม่มีการเปรียบเทียบ จริง
ชุดตัวเลือก ตัวเลือกจากชุดของตัวเลือกที่สำรองไว้โดยตัวเลข ชนิดข้อมูลนี้รวมป้ายกำกับข้อความที่แปลได้แบบท้องถิ่นพร้อมค่าตัวเลข ป้ายกำกับจะปรากฏในแอป และค่าตัวเลขจะถูกจัดเก็บและใช้สำหรับการเปรียบเทียบ ชนิดข้อมูลนี้ได้รับการสนับสนุนโดยฟังก์ชัน Type หากมีการใช้อินสแตนซ์ของฟิลด์ ตัวเลือก ตามชื่อ ThisItem.OrderStatus
สี ข้อกำหนดสี รวมถึงช่องทางอัลฟา Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
สกุลเงิน ค่าสกุลเงินที่จัดเก็บในหมายเลขทศนิยม ค่าสกุลเงินเหมือนกับค่าตัวเลขพร้อมตัวเลือกการจัดรูปแบบสกุลเงิน ชนิดข้อมูล สกุลเงิน ไม่ได้รับการสนับสนุนโดยฟังก์ชัน Type 123
4.56
วันที่ วันที่ที่ไม่มีเวลา ในเขตเวลาของผู้ใช้แอป Date( 2019, 5, 16 )
วันที่เวลา วันที่ที่มีเวลา ในเขตเวลาของผู้ใช้แอป DateTimeValue( "May 16, 2019 1:23:09 PM" )
Decimal ตัวเลขที่มีความแม่นยำสูง การดำเนินการฐาน 10 และช่วงที่จำกัด 123
Decimal("1.2345")
Float ตัวเลขที่มีความแม่นยำมาตรฐาน การดำเนินการฐาน 2 และช่วงที่กว้าง 123
8.903e121
1.234e-200
GUID รหัสตัวระบุที่ไม่ซ้ำแบบส่วนกลาง GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
ไฮเปอร์ลิงก์ สตริงข้อความที่มีไฮเปอร์ลิงก์ "https://powerapps.microsoft.com"
รูปภาพ สตริงข้อความ รหัสเฉพาะของทรัพยากรแบบสากล (URI) ไปยังรูปภาพในรูปแบบ .jpeg, .png, .svg, .gif หรือรูปแบบทั่วไปอื่นๆ ของเว็บ ชนิดข้อมูล รูปภาพ ไม่ได้รับการสนับสนุนโดยฟังก์ชัน Type MyImage เพิ่มเป็นทรัพยากรแอป
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
สื่อ สตริงข้อความ URI สำหรับการบันทึกวิดีโอหรือเสียง ชนิดข้อมูล สื่อ ไม่ได้รับการสนับสนุนโดยฟังก์ชัน Type MyVideo เพิ่มเป็นทรัพยากรแอป
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
หมายเลข นามแฝงสำหรับ Decimal (โฮสต์ Power Fx ส่วนใหญ่) หรือ Float (แอปพื้นที่ทำงาน) หากสามารถใช้ตัวเลขที่หลากหลายสำหรับสถานการณ์ที่กำหนด ให้ใช้ ตัวเลข เพื่อความเข้ากันได้สูงสุด 123
0.0123
1e4
บันทึก เรกคอร์ดของค่าข้อมูล ชนิดข้อมูลผสมนี้มีอินสแตนซ์ของชนิดข้อมูลอื่นๆ ที่ระบุไว้ในหัวข้อนี้ ข้อมูลเพิ่มเติม: การทำงานกับตาราง ชนิดข้อมูลนี้ได้รับการสนับสนุนโดยฟังก์ชัน Type หากมีการใช้อินสแตนซ์ของ เรกคอร์ด { บริษัท: "Northwind Traders",
พนักงาน: 35,
NonProfit: เท็จ}
บันทึกการอ้างอิง การอ้างอิงไปยังเรกคอร์ดในตาราง การอ้างอิงดังกล่าวมักใช้กับการค้นหาโพลีมอร์ฟิค ข้อมูลเพิ่มเติม: การทำงานกับการอ้างอิง ชนิดข้อมูลนี้ไม่ได้รับการสนับสนุนโดยฟังก์ชัน Type First(Accounts).Owner
ตาราง ตารางของเรกคอร์ด เรกคอร์ดทั้งหมดจะต้องมีชื่อเดียวกันสำหรับฟิลด์ที่มีชนิดข้อมูลเดียวกัน และฟิลด์ที่ละเว้นจะถือเป็น ว่างเปล่า ชนิดข้อมูลผสมนี้มีอินสแตนซ์ของชนิดข้อมูลอื่นๆ ที่ระบุไว้ในหัวข้อนี้ ข้อมูลเพิ่มเติม: การทำงานกับตาราง ชนิดข้อมูลนี้ได้รับการสนับสนุนโดยฟังก์ชัน Type หากมีการใช้อินสแตนซ์ของ ตาราง Table({FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
ข้อความ สตริงของข้อความ Unicode "Hello, World"
เวลา เวลาที่ไม่มีวันที่ ในเขตเวลาของผู้ใช้แอป เวลา( 11, 23, 45 )
Untyped ออบเจ็กต์ชนิดที่ไม่ได้ประกาศ ออบเจ็กต์พื้นฐานสามารถเป็นชนิดที่มีอยู่และสามารถแปลงเป็นชนิดที่เข้ากันได้โดยใช้ฟังก์ชันต่างๆ เช่น Boolean(), Value(), Table() ฯลฯ สำหรับข้อมูลเพิ่มเติม โปรดดู ออบเจ็กต์ไม่ระบุชนิด และ การทำงานกับ JSON ParseJSON("{ ""ฟิลด์"" : 1234 }").Field
โมฆะ ใช้โดยฟังก์ชันที่ผู้ใช้กำหนดพฤติกรรมเท่านั้น ซึ่งบ่งชี้ว่าฟังก์ชันไม่มีประเภทการส่งคืน ชนิดข้อมูลนี้ไม่ได้รับการสนับสนุนโดยฟังก์ชัน Type แม้ว่าฟังก์ชันจะไม่มีชนิดหรือค่าการส่งคืน แต่ก็สามารถส่งคืนข้อผิดพลาดได้เสมอ Hi(): Void = { Notify( "Hello!" ) }
ใช่/ไม่ใช่ ตัวเลือกจากชุดของสองตัวเลือก ที่สำรองไว้โดยค่าบูลีน ชนิดข้อมูลนี้รวมป้ายกำกับข้อความที่แปลได้แบบท้องถิ่นพร้อมค่าบูลีน ป้ายกำกับจะปรากฏในแอป และค่าบูลีนจะถูกจัดเก็บและใช้สำหรับการเปรียบเทียบ ชนิดข้อมูลนี้ได้รับการสนับสนุนโดยฟังก์ชัน Type หากมีการใช้อินสแตนซ์ของฟิลด์ ใช่/ไม่ ตามชื่อ ThisItem.Taxable

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

Blank

ชนิดข้อมูลทั้งหมดสามารถมีค่าเป็น ว่างเปล่า (ในคำอื่นๆ ไม่มีค่า) คำว่า "null" มักใช้ในฐานข้อมูลสำหรับแนวคิดนี้

ใช้ฟังก์ชัน Blank ด้วย Set หรือฟังก์ชัน Patch เพื่อตั้งค่าตัวแปรหรือฟิลด์เป็น ว่างเปล่า ตัวอย่างเช่น, ตั้งค่า( x, ว่างเปล่า() ) ลบค่าใดๆ ในตัวแปรแบบส่วนกลาง x

ทดสอบหาค่า ว่างเปล่า โดยใช้ฟังก์ชัน IsBlank แทนค่า ว่างเปล่า ที่เป็นไปได้ ด้วยค่า ไม่-ว่างเปล่า โดยใช้ฟังก์ชัน Coalesce

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

ทั้งสี่ประเภทข้อมูลเหล่านี้จะขึ้นอยู่กับสตริงข้อความ Unicode

ข้อความฝังตัว

สตริงข้อความแบบฝังในสูตรถูกล้อมรอบด้วยเครื่องหมายอัญประกาศคู่ ใช้เครื่องหมายอัญประกาศคู่สองตัวพร้อมกัน เพื่อเป็นตัวแทนของเครื่องหมายอัญประกาศคู่เดียวในสตริงข้อความ ตัวอย่างเช่น ใช้สูตรต่อไปนี้ในคุณสมบัติ OnSelect ของกาีรควบคุม Button:

Notify( "Jane said ""Hello, World!""" )

ให้ผลลัพธ์ในแบนเนอร์เมื่อกดปุ่ม โดยไม่ใส่เครื่องหมายอัญประกาศคู่แรกและสุดท้าย (ขณะที่คั่นสตริงข้อความ) และเครื่องหมายอัญประกาศคู่ซ้ำรอบๆ Hello, World! จะถูกแทนที่ด้วยเครื่องหมายอัญประกาศคู่เดียว:

ป๊อปอัปการแจ้งเตือนพร้อมข้อความที่เจนพูดว่า

เครื่องหมายอัญประกาศเดี่ยวใช้สำหรับ ชื่อตัวระบุ ที่มีอักขระพิเศษและไม่มีความสำคัญพิเศษภายในสตริงข้อความ

การใช้ตัวแปรในสตริง

ใช้การใช้ตัวแปรในสตริงเพื่อฝังสูตรภายในสตริงข้อความ วิธีการนี้มักจะง่ายกว่าและเห็นภาพผลลัพธ์มากกว่าการใช้ฟังก์ชัน Concatenate หรือตัวดำเนินการ &

วางเครื่องหมายดอลลาร์ $ นำหน้าสตริงข้อความและใส่สูตรที่ฝังในวงเล็บปีกกา {} หากต้องการใส่วงเล็บปีกกาในสตริงข้อความ ให้ใช้วงเล็บปีกกาซ้ำๆ: {{ หรือ }} สามารถใช้การใช้ตัวแปรในสตริงได้ทุกที่ที่สามารถใช้สตริงข้อความมาตรฐานได้

ตัวอย่างเช่น พิจารณาสูตรนี้ด้วยตัวแปรส่วนกลาง แอปเปิ้ล ตั้งค่าเป็น 3 และ กล้วย ตั้งค่าเป็น 4:

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

สูตรนี้ส่งคืนสตริงข้อความ เรามีแอปเปิ้ล 3 ลูก กล้วย 4 ลูก รวมเป็น 7 ผล ตัวแปร แอปเปิ้ล และ กล้วย จะถูกแทรกในข้อความแทนที่วงเล็บปีกกาพร้อมกับผลลัพธ์ของสูตรทางคณิตศาสตร์ แอปเปิ้ล+กล้วย ช่องว่างและอักขระอื่นๆ ที่อยู่ในวงเล็บปีกกาจะยังคงเหมือนเดิม

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

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"

หาก NickName ตั้งค่าเป็น "Joe" จากนั้นสูตรนี้จะสร้างสตริงข้อความ สวัสดี Joe ยินดีที่ได้พบคุณ หาก NickName เป็น ว่างเปล่า และ FirstName เป็น "Joseph" จากนั้นสูตรนี้จะสร้าง สวัสดี Joseph ยินดีที่ได้เจอคุณ แทน

การใช้ตัวแปรในสตริงสามารถรวมสตริงข้อความมาตรฐานในสูตรที่ฝังได้ ตัวอย่างเช่น หากไม่ได้ระบุ NickName หรือ FirstName เรายังคงระบุ "Friend" เป็นชื่อแทน:

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

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

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
ชื่อ ชื่อกลาง นามสกุล ผลลัพธ์
John Qunicy Doe Welcome John Quincy Doe!
John ว่างเปล่า Doe Welcome John Doe!
ว่างเปล่า ว่างเปล่า Doe Welcome Doe!
ว่างเปล่า ว่างเปล่า ว่างเปล่า Welcome Friend!

ขึ้นบรรทัดใหม่

สตริงข้อความที่ฝังสามารถมีการขึ้นบรรทัดใหม่ได้ ตัวอย่างเช่น พิจารณาการตั้งค่าคุณสมบัติ Text ของตัวควบคุม Label ดังต่อไปนี้:

"Line 1
Line 2
Line 3"

สูตรนี้ส่งผลให้มีสามบรรทัดแสดงในตัวควบคุม label:

ตัวควบคุม text string และ label ที่ฝังแสดงสามบรรทัดด้วยบรรทัดที่ 1 บรรทัดที่ 2 และบรรทัดที่ 3

การขึ้นบรรทัดใหม่ยังได้รับการสนับสนุนด้วยการใช้ตัวแปรในสตริง:

$"Line {1}
Line {1+1}
Line {1+1+1}"

ซึ่งส่งผลให้ผลลัพธ์เดียวกัน:

สูตรการใช้ตัวแปรในสตริงและตัวควบคุม label แสดงสามบรรทัดด้วยบรรทัดที่ 1 บรรทัดที่ 2 และบรรทัดที่ 3

ทรัพยากรรูปภาพและสื่อ

ผ่านเมนู ไฟล์ คุณสามารถเพิ่มไฟล์รูปภาพ วิดีโอ และเสียง เป็นทรัพยากรแอป ชื่อของไฟล์ที่นำเข้าจะกลายเป็นชื่อทรัพยากรในแอป ในกราฟิกนี้ โลโก้ Northwind Traders ซึ่งมีชื่อว่า nwindlogo ถูกเพิ่มลงในแอปแล้ว:

ทรัพยากร Northwind

หากต้องการใช้ทรัพยากรนี้ในแอป ให้ระบุในคุณสมบัติ Image ของการควบคุม Image:

รูปภาพ Northwind

URIs สำหรับรูปภาพและสื่ออื่นๆ

คุณสามารถขุดลึกลงไปในตัวอย่างที่ผ่านมา โดยตั้งค่าคุณสมบัติ Text ของตัวควบคุม Label เป็น nwindlogo ป้ายกำกับแสดงสตริงข้อความ:

ข้อความ Northwind

แอปพื้นที่ทำงานอ้างอิงภาพแต่ละภาพหรือไฟล์สื่ออื่นๆ ไม่ว่าจะอยู่ในคลาวด์หรือเพิ่มเป็นทรัพยากรแอป โดยสตริงข้อความ URI

ตัวอย่างเช่น คุณสมบัติ Image ของตัวควบคุมรูปภาพยอมรับ ไม่เพียงแต่ทรัพยากรแอปเท่านั้น แต่ยังลิงก์ไปยังรูปภาพบนเว็บ เช่น "https://northwindtraders.com/logo.jpg" คุณสมบัตินี้ยังยอมรับรูปภาพแบบอินไลน์ที่ใช้ data URI scheme เช่นในตัวอย่างนี้:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

URI นั้นแสดงเพชรสีม่วงสองก้อนขนาดใหญ่ขึ้น:

เพชรคู่

คุณสามารถแสดงภาพล่าสุดที่ถ่ายไว้ใน การควบคุม Camera ถ้าคุณตั้งค่าคุณสมบัติ Image ของตัวควบคุมรูปภาพ เป็นคุณสมบัติ Photo ของการควบคุมกล้อง แอปถือภาพในหน่วยความจำและคุณสมบัติ Photo ของการควบคุมกล้อง ส่งกลับการอ้างอิง URI ไปยังภาพ ตัวอย่างเช่น คุณอาจถ่ายภาพ และคุณสมบัติของกล้อง Photo สามารถส่งคืนได้ "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1"

คุณใช้ URI เพื่ออ้างอิงรูปภาพหรือไฟล์สื่ออื่นที่เก็บไว้ในฐานข้อมูล ด้วยวิธีนี้ แอปจะไม่ดึงข้อมูลจริงจนกว่าจะจำเป็น ตัวอย่างเช่น ไฟล์แนบในตาราง Microsoft Dataverse อาจส่งคืน "appres://datasources/Contacts/table/..." ในตัวอย่างกล้อง คุณสามารถแสดงภาพนี้ได้โดยการตั้งค่าคุณสมบัติ Image ของตัวควบคุมรูปภาพสำหรับการอ้างอิงนี้ ซึ่งดึงข้อมูลไบนารี

เมื่อคุณบันทึกประเภทข้อมูลสื่อ เช่น รูปภาพ ไปยังฐานข้อมูล แอปจะส่งภาพหรือข้อมูลสื่อจริง ไม่ใช่การอ้างอิง URI

ขีดจำกัดของขนาด

ในฐานะที่เป็นสตริงข้อความและ URIs ชนิดข้อมูลเหล่านี้ไม่มีการจำกัดความยาวไว้ล่วงหน้า

ข้อมูลไบนารีที่อ้างอิงชนิดข้อมูลเหล่านี้ ยังไม่มีการจำกัดขนาดไว้ล่วงหน้า ตัวอย่างเช่น ภาพที่ถ่ายผ่านส่วนควบคุมกล้องที่อ้างอิง "appres://..." สามารถมีขนาดใหญ่และความละเอียดสูงเท่าที่กล้องของอุปกรณ์สามารถรวบรวม ความละเอียด อัตราเฟรม และคุณสมบัติอื่นๆ ของไฟล์สื่อไม่ได้ถูกจำกัดโดยชนิดข้อมูล แต่การควบคุมเฉพาะสำหรับการเล่นและการจับภาพสื่ออาจมีข้อจำกัดของตัวเอง

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

วิธีปฏิบัติที่ดีที่สุด ให้เก็บข้อมูลไว้ในหน่วยความจำตราบเท่าที่จำเป็น อัปโหลดภาพไปยังฐานข้อมูลทันทีที่คุณทำได้; ดาวน์โหลดรูปภาพเฉพาะเมื่อผู้ใช้แอปร้องขอเท่านั้น

ตัวเลข

หมายเหตุ

Power Apps รองรับเฉพาะ Float วันนี้และเป็นชนิดของตัวเลขทั้งหมด การรองรับ Decimal จะถูกเพิ่มในเร็วๆ นี้

Power Fx รองรับตัวเลขสองประเภท: Decimal และ Float (พร้อมคำพ้องความหมาย ตัวเลข และ สกุลเงิน)

Decimal เหมาะที่สุดสำหรับการคำนวณทางธุรกิจส่วนใหญ่ โดยสามารถแสดงตัวเลขในฐาน 10 ได้อย่างแม่นยำ ซึ่งหมายความว่า 0.1 สามารถแสดงได้อย่างแม่นยำและจะหลีกเลี่ยงข้อผิดพลาดในการปัดเศษระหว่างการคำนวณ มีช่วงกว้างเพียงพอสำหรับความต้องการทางธุรกิจ สูงสุด 1028 พร้อมความแม่นยำสูงสุด 28 หลัก Decimal เป็นชนิดข้อมูลตัวเลขเริ่มต้นสำหรับโฮสต์ Power Fx ส่วนใหญ่ ซึ่งใช้เมื่อมีการเขียน 2*2

Float เหมาะที่สุดสำหรับการคำนวณทางวิทยาศาสตร์ โดยสามารถแสดงตัวเลขในช่วงที่ใหญ่ขึ้นได้ถึง 10308 ความแม่นยำถูกจำกัดไว้ที่ทศนิยม 15 ตำแหน่ง และคณิตศาสตร์จะขึ้นอยู่กับฐาน 2 ดังนั้นจึงไม่สามารถแสดงค่าทศนิยมทั่วไปบางค่าได้อย่างแม่นยำ Float ยังมีประสิทธิภาพที่สูงกว่าและเป็นที่นิยมหากนั่นคือปัจจัยและความแม่นยำไม่สำคัญ

เลขทศนิยม

ชนิดข้อมูล Decimal มักใช้ชนิดข้อมูล ชนิดข้อมูลทศนิยม .NET โฮสต์บางแห่ง เช่น คอลัมน์สูตร Dataverse ที่ทำงานใน SQL Serer จะใช้ชนิดข้อมูลฐานสิบของ SQL Server

Decimal ทำการคำนวณแบบที่คุณเรียนรู้ในโรงเรียน โดยใช้เลขฐาน 10 หลัก สิ่งสำคัญเพื่อหลีกเลี่ยงข้อผิดพลาดในการปัดเศษจากความแตกต่างเล็กน้อยที่อาจสะสมเมื่อใช้คณิตศาสตร์ฐาน 2 (ตามการใช้ Float)

ช่วงนี้มีตั้งแต่ค่าบวก 79,228,162,514,264,337,593,543,950,335 ไปจนถึงค่าลบ 79,228,162,514,264,337,593,543,950,335 ตัวคั่นทศนิยมสามารถวางไว้ที่ใดก็ได้ภายในตัวเลขเหล่านี้ ซึ่งให้ความแม่นยำสูงสุด 28 หลัก และยังคงแสดงได้อย่างแม่นยำ ตัวอย่างเช่น 79,228,162,514,264.337593543950335 สามารถแสดงได้เหมือนกันทุกประการ เช่นเดียวกับ 7.9228162514264337593543950335

จำนวนจุดทศนิยมลอยตัว

ชนิดข้อมูล Float หรือที่เรียกว่า หมายเลข หรือ สกุลเงิน ใช้มาตรฐานจุดทศนิยมลอยตัวที่เที่ยงตรงแม่นยำสองเท่าของ IEEE 754 มาตรฐานนี้ให้ตัวเลขจำนวนมากที่ใช้งานได้ตั้งแต่ –1.79769 x 10308 ถึง 1.79769 x 10308 ค่าที่น้อยที่สุดที่สามารถแทนได้คือ 5 x 10-324

Float สามารถแทนจำนวนทั้งหมด (หรือจำนวนเต็ม) ระหว่าง –9,007,199,254,740,991 (–(253 – 1)) และ 9,007,199,254,740,991 (253 – 1), แบบรวม ช่วงนี้มีขนาดใหญ่กว่าชนิดข้อมูลจำนวนเต็มแบบ 32 บิต (หรือ 4 ไบต์) ที่ฐานข้อมูลใช้โดยทั่วไป อย่างไรก็ตาม แอปพื้นที่ทำงานไม่สามารถแสดงชนิดข้อมูลจำนวนเต็ม 64 บิต (หรือ 8 ไบต์) คุณอาจต้องการจัดเก็บหมายเลขในฟิลด์ข้อความหรือใช้คอลัมน์การคำนวณเพื่อทำสำเนาของตัวเลขในฟิลด์ข้อความ เพื่อให้แมปเข้ากับชนิดข้อมูล ข้อความ ในแอปพื้นที่ทำงาน ด้วยวิธีนี้ คุณสามารถเก็บ แสดง และป้อนค่าเหล่านี้ และเปรียบเทียบค่าเหล่านี้เพื่อพิจารณาว่าเท่ากันหรือไม่ อย่างไรก็ตาม คุณไม่สามารถทำการคำนวณตัวเลขในฟอร์มนี้ได้

เลขทศนิยมเป็นค่าประมาณ ดังนั้นบางครั้งก็สามารถให้ผลลัพธ์ที่ไม่คาดคิดกับตัวอย่างเอกสารมากมาย คุณอาจคาดหวังสูตร 55 / 100 * 100 เพื่อส่งคืน 55 และ (55 / 100 * 100) - 55 เพื่อกลับเป็นศูนย์อย่างแน่นอน อย่างไรก็ตา มสูตรหลังจะคืนค่า 7.1054 x 10-15 ซึ่งเล็กมาก แต่ไม่เป็นศูนย์ ความแตกต่างเล็กๆ น้อยๆ นั้นไม่ได้ทำให้เกิดปัญหาแต่อย่างใด และแอปจะปัดเศษออกเมื่อแสดงผลลัพธ์ อย่างไรก็ตาม ความแตกต่างเล็กน้อยสามารถรวมกันในการคำนวณครั้งต่อไปและดูเหมือนจะให้คำตอบที่ผิด

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

ค่าเริ่มต้นและการแปลง

หมายเหตุ

Power Apps รองรับเฉพาะ Float วันนี้และเป็นชนิดของตัวเลขทั้งหมด การรองรับ Decimal จะถูกเพิ่มในเร็วๆ นี้

โฮสต์ Power Fx ส่วนใหญ่ใช้ Decimal ตามค่าเริ่มต้น การมีค่าเริ่มต้นนี้หมายถึง:

  • ตัวเลขสัญพจน์ในสูตร ตัวเลข 1.234 จะได้รับการตีความเป็นค่า ทศนิยม ตัวอย่างเช่น สูตร 1.234 * 2 ตีความ 1.234 และ 2 เป็น ทศนิยม และส่งคืนผลลัพธ์ ทศนิยม
  • ฟังก์ชัน Value Value( "1.234" ) ส่งคืนค่า ทศนิยม ตัวอย่างเช่น ในสูตร Value( "1.234" ) * 2 ฟังก์ชัน Value ตีความเนื้อหาของสตริงข้อความ "1.234" ที่มีอยู่เป็น ทศนิยม

หากต้องการทำงานกับค่า Float จะใช้ฟังก์ชัน Float ในการขยายตัวอย่างของเรา Float( 1.234 ) แปลง ทศนิยม1.234 เป็น เลขทศนิยม เลขทศนิยม ยังใช้แทน Value เพื่อแปลงสตริงที่มีตัวเลขทศนิยม เช่น Float( "1.234" ) เป็น เลขทศนิยม ซึ่งจำเป็นหากไม่สามารถแสดงตัวเลขเป็น ทศนิยม ได้

โดยสรุป:

การใช้ Decimal Float
ตัวเลขสัญพจน์ในสูตร 1.234 Float( 1.234 )
Float( "1.234" )
การแปลงจากสตริงข้อความ Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
การแปลงระหว่างชนิดตัวเลข Decimal( float ) Float( decimal )
การแปลงเป็นสตริงข้อความ Text( decimal ) Text( float )

การผสมชนิดตัวเลข

เลขทศนิยม และ ทศนิยม สามารถผสมได้อย่างอิสระ เมื่อผสมกัน ค่า Decimal จะถูกแปลงเป็นค่า Float เนื่องจากมีช่วงที่กว้างกว่า เนื่องจากการแปลงนี้อาจส่งผลให้สูญเสียความแม่นยำ จึงเป็นสิ่งสำคัญที่จะไม่ผสมทั้งสองอย่างโดยไม่จำเป็น เนื่องจาก ทศนิยม เป็นชนิดข้อมูลตามตัวอักษรเริ่มต้น และฟังก์ชันตัวเลขส่วนใหญ่ยังคงรักษาประเภทไว้ จึงค่อนข้างง่ายที่จะหลีกเลี่ยงการย้ายไปยัง เลขทศนิยม โดยไม่ต้องการ

ตัวอย่างเช่น พิจารณาการคำนวณต่อไปนี้โดยใช้ pac power-fx repl หลังจากติดตั้ง Power Platform CLI เนื่องจากตัวเลขทั้งสองเป็น Decimal การคำนวณจึงเสร็จสิ้นใน Decimal และผลลัพธ์ยังคงความแม่นยำครบถ้วน:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

หากตัวถูกดำเนินการตัวที่สองเปลี่ยนเป็น เลขทศนิยม แทน การคำนวณทั้งหมดจะดำเนินการใน เลขทศนิยม และค่าเศษส่วนเล็กน้อยจะหายไป:

>> 1.0000000000000000000000000001 * Float(2)
2

วันที่ เวลา และ วันที่เวลา

โซนเวลา

ค่าวันที่/เวลา อยู่ในหมวดหมู่เหล่านี้:

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

ตารางนี้แสดงตัวอย่าง:

ชนิดวันที่/เวลา ค่าที่เก็บไว้ในฐานข้อมูล ค่าที่แสดงและป้อน 7 ชั่วโมงทางตะวันตกของ UTC ค่าที่แสดงและป้อน 4 ชั่วโมงทางตะวันออกของ UTC
เวลาท้องถิ่นของผู้ใช้ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันเสาร์พฤษภาคม182019
9:00 PM
วันอาทิตย์พฤษภาคม192019
8:00 AM
เขตเวลาอิสระ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันอาทิตย์พฤษภาคม192019
4:00 AM
วันอาทิตย์พฤษภาคม192019
4:00 AM

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

ใช้ฟังก์ชั่น DateAdd และ TimeZoneInformation ในการแปลงเวลาท้องถิ่นเป็น UTC และกลับมาอีกครั้ง ดูตัวอย่างในตอนท้ายของเอกสารประกอบสำหรับฟังก์ชั่นเหล่านี้

ตัวเลขเทียบเท่า

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

เมื่อแอปพื้นที่ทำงานอ่านค่า เขตเวลาอิสระ จากแหล่งข้อมูลหรือเขียนค่าดังกล่าวไปยังแหล่งข้อมูล แอปจะปรับค่าโดยอัตโนมัติเพื่อชดเชยโซนเวลาของผู้ใช้แอป แอปจะถือว่าค่าเป็นค่า UTC สอดคล้องกับค่าวันที่/เวลาอื่นๆ ทั้งหมดในแอป เนื่องจากการชดเชยนี้ ค่า เขตเวลาอิสระ ต้นฉบับจะปรากฏขึ้นเมื่อแอปปรับค่า UTC สำหรับเขตเวลาของผู้ใช้แอป

คุณสามารถสังเกตพฤติกรรมนี้อย่างใกล้ชิดยิ่งขึ้น โดยใช้ฟังก์ชั่น Value ในการเข้าถึงค่าตัวเลขพื้นฐานสำหรับค่าวันที่/เวลา ฟังก์ชันนี้ส่งคืนค่าวันที่/เวลาเป็นจำนวนมิลลิวินาที นับตั้งแต่วันที่ 1 มกราคม 1970 00:00:00.000 UTC

เนื่องจากทุกค่าวันที่/เวลา ถูกเก็บไว้ใน UTC สูตร Value( Date( 1970, 1, 1 ) ) จะไม่กลับมาเป็นศูนย์ในส่วนใหญ่ของโลกเพราะฟังก์ชัน Date ส่งคืนวันที่ใน UTC ตัวอย่างเช่น สูตรจะส่งคืน 28,800,000 ในเขตเวลาที่ชดเชยจาก UTC ภายในแปดชั่วโมง ตัวเลขนั้นแสดงถึงจำนวนมิลลิวินาทีในแปดชั่วโมง

กลับไปที่ตัวอย่างของเรา:

ชนิดวันที่/เวลา ค่าที่เก็บไว้ในฐานข้อมูล ค่าที่แสดงและป้อน 7 ชั่วโมงทางตะวันตกของ UTC ฟังก์ชัน Value ส่งคืน
เวลาท้องถิ่นของผู้ใช้ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันเสาร์พฤษภาคม182019
9:00 PM
1,558,238,400,000
(วันอาทิตย์พฤษภาคม192019
4:00 AM UTC)
เขตเวลาอิสระ วันอาทิตย์พฤษภาคม192019
4:00 AM
วันอาทิตย์พฤษภาคม192019
4:00 AM
1,558,263,600,000
(วันอาทิตย์พฤษภาคม192019
11:00 AM UTC)

การแปลงเวลา Unix

เวลา Unix แสดงจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 00:00:00 UTC เนื่องจากแอปพื้นที่ทำงานใช้มิลลิวินาทีแทนที่จะเป็นวินาที คุณสามารถแปลงระหว่างสองรายการด้วยการคูณหรือหารด้วย 1,000

ตัวอย่างเช่น เวลา Unix แสดง 9 กันยายน 2001 เวลา 01:46:40 UTC เป็น 1,000,000,000 หากต้องการแสดงค่าวันที่/เวลาในแอปพื้นที่ทำงาน ให้คูณตัวเลขนั้นด้วย 1,000 เพื่อแปลงเป็นมิลลิวินาที จากนั้นใช้ในฟังก์ชัน Text สูตร ข้อความ(1000000000 * 1,000, DateTimeFormat.UTC) ส่งคืนสตริง 2001-09-09T01:46:40.000Z

อย่างไรก็ตาม ฟังก์ชันนั้นจะคืนค่า วันเสาร์ที่ 8 กันยายน 2001 18:46:40 ถ้าคุณใช้รูปแบบ DateTimeFormat.LongDateTime24 ในเขตเวลาที่ชดเชยเวลา -7 ชั่วโมงจาก UTC (7 ชั่วโมงทางตะวันตกของ UTC) ผลลัพธ์นี้แสดงให้เห็นว่าค่า วันที่เวลา อย่างถูกต้องขึ้นอยู่กับโซนเวลาท้องถิ่น

หากต้องการแปลงเป็นเวลา Unix ให้หารผลลัพธ์จาก ค่า ด้วย 1,000:
RoundDown( ค่า (UnixTime) / 1000, 0 )

หากคุณต้องการเวลา Unix ในค่า วันที่ สำหรับการคำนวณเพิ่มเติมหรือแสดงผลภายใน Power Apps ใช้สูตรนี้:
DateAdd( Date( 1970,1,1 ), UnixTime, Seconds )

SQL Server

SQL Server มี วันที่เวลา, วันที่เวลา2 และประเภทข้อมูลวันที่/เวลาอื่นๆ ที่ไม่มีเขตเวลาชดเชยและไม่ได้ระบุเขตเวลาที่พวกเขาอยู่ แอปพื้นที่ทำงานถือว่าค่าเหล่านี้ถูกจัดเก็บใน UTC และถือว่าเป็น เวลาท้องถิ่นของผู้ใช้ หากค่านั้นมีความหมายว่าเป็นเขตเวลาอิสระให้แก้ไขการแปล UTC โดยใช้ฟังก์ชัน TimeZoneOffset

แอปพื้นที่ทำงานใช้ข้อมูลเขตเวลาที่รวมอยู่ในฟิลด์ datetimeoffset เมื่อแปลงค่าเป็นตัวแทน UTC ภายในของแอป แอปใช้ UTC เป็นเขตเวลาเสมอ (ออฟเซ็ตเขตเวลาเป็นศูนย์) เมื่อเขียนข้อมูล

แอปพื้นที่ทำงานอ่านและเขียนค่าของชนิดข้อมูล เวลา ใน SQL Server เป็นสตริงข้อความใน รูปแบบระยะเวลา ISO 8601 ตัวอย่างเช่น คุณต้องแยกวิเคราะห์รูปแบบสตริงนี้และใช้ฟังก์ชั่น Time ในการแปลงสตริงข้อความ "PT2H1M39S" ไปยังค่า เวลา:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

การผสมข้อมูลวันที่และเวลา

วันที่, เวลา และ วันที่เวลา มีชื่อแตกต่างกัน แต่พวกเขาทั้งหมดมีข้อมูลเดียวกันเกี่ยวกับวันที่และเวลา

ค่า วันที่ สามารถรวมข้อมูลเวลา ซึ่งมักจะเป็นเที่ยงคืน ค่า เวลา สามารถนำข้อมูลวันที่ ซึ่งมักจะเป็น 1 มกราคม 1970 Dataverse เก็บข้อมูลเวลาด้วยฟิลด์ วันที่เท่านั้น แต่จะแสดงเฉพาะข้อมูลวันที่ตามค่าเริ่มต้น ในทำนองเดียวกัน บางครั้งแอปพื้นที่ทำงานจะแยกความแตกต่างระหว่างชนิดข้อมูลเหล่านี้ เพื่อกำหนดรูปแบบและตัวควบคุมเริ่มต้น

ไม่แนะนำให้เพิ่มและลบค่าวันที่และเวลาโดยตรงเนื่องจากเขตเวลาและการแปลงอื่นๆ อาจทำให้เกิดผลลัพธ์ที่สับสน ทั้งใช้ฟังก์ชั่น Value ในการแปลงค่าวันที่/เวลาเป็นมิลลิวินาทีก่อน และคำนึงถึงเขตเวลาของผู้ใช้แอป หรือใช้ฟังก์ชั่น DateAdd และ DateDiff เพื่อเพิ่มหรือลบจากหนึ่งในค่าเหล่านี้

ตัวเลือกและใช่/ไม่ใช่

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

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

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

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

If( ThisItem.OrderStatus = "Active", ...

แต่คุณสามารถใช้สูตรนี้:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

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

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

If( ThisItem.Taxable = TaxStatus.Taxable, ...

คุณยังสามารถใช้สูตรเทียบเท่านี้ได้:

If( ThisItem.Taxable, ...