Thep Excel

BinaryOccurrence.Typeระบุจำนวนครั้งที่คาดว่าข้อมูลจะปรากฏในรูปแบบ Binary

Enumeration ที่ใช้กำหนดว่าองค์ประกอบของ Binary Format ควรปรากฏกี่ครั้ง ช่วยให้ Power Query เข้าใจโครงสร้างข้อมูลสตรีมไบนารี

fx
=BinaryOccurrence.Optional | BinaryOccurrence.Required | BinaryOccurrence.Repeating

ความนิยม2/10
ความยาก2/10
ประโยชน์2/10

อัปเดต 4 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
[BinaryOccurrence.Optional]ไม่บังคับ number (0) รายการนี้มีได้ 0 หรือ 1 ครั้ง ใช้เวลารายการไม่บังคับต้องมี
[BinaryOccurrence.Required]ไม่บังคับ number (1) รายการนี้ต้องมี 1 ครั้งพอดี ใช้เมื่อข้อมูลอบรม ต้องมีแน่นอน
[BinaryOccurrence.Repeating]ไม่บังคับ number (2) รายการนี้มีได้ 0 ครั้งหรือมากกว่า ใช้เมื่อมีหลายรายการที่เหมือนกันต่อเนื่องกัน

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

BinaryOccurrence.Type เป็น Enumeration ในม Power Query ที่ใช้ระบุกฎการปรากฏตัวของรายการเมื่ออ่านข้อมูล Binary Format ครับ มีค่าได้สามแบบ: Optional (0-1 ครั้ง), Required (ต้องมี 1 ครั้ง), หรือ Repeating (0 ครั้งขึ้นไป)

ที่เจ๋งคือ ด้วยการระบุรูปแบบการปรากฏตัวนี้ Power Query จะสามารถอ่านไฟล์ Binary ได้อย่างถูกต้อง โดยไม่ต้องคำนวณตำแหน่งไบต์เอง

ส่วนตัวผม ใช้ BinaryOccurrence.Type บ่อยครั้งตอนอ่านไฟล์ที่มี Header ตรงกันข้ามกับ Repeating Sections ของข้อมูล ทำให้รู้ว่าจะต้องตั้งค่าแต่ละส่วนอย่างไร 😎

Examples

อ่านไฟล์ Binary ที่มี Header และ Recordslet BinaryData = File.Contents("C:\\data.bin"), Format = BinaryFormat.Record([ [Header, BinaryFormat.Text(4), BinaryOccurrence.Required], [Count, BinaryFormat.B…

Header ต้องมี (Required) และ Data หลายรายการ (Repeating) แต่ Count ต้องมี 1 ค่า

fx
let
BinaryData = File.Contents("C:\\data.bin"),
Format = BinaryFormat.Record([
[Header, BinaryFormat.Text(4), BinaryOccurrence.Required],
[Count, BinaryFormat.Byte, BinaryOccurrence.Required],
[Data, BinaryFormat.List(BinaryFormat.Byte), BinaryOccurrence.Repeating]
]),
Result = Binary.View(BinaryData, Format)
in
Result

ผลลัพธ์[Header = "TEST", Count = 10, Data = {1, 2, 3, …}]
Optional Field ในโครงสร้าง Binarylet Format = BinaryFormat.Record([ [ID, BinaryFormat.Byte, BinaryOccurrence.Required], [Signature, BinaryFormat.Text(3), BinaryOccurrence.Optional], [Value, Bin…

Signature อาจมีหรือไม่มีก็ได้ (Optional) แต่ ID และ Value ต้องมี (Required)

fx
let
Format = BinaryFormat.Record([
[ID, BinaryFormat.Byte, BinaryOccurrence.Required],
[Signature, BinaryFormat.Text(3), BinaryOccurrence.Optional],
[Value, BinaryFormat.Byte, BinaryOccurrence.Required]
])
in
Format

ผลลัพธ์BinaryFormat.Record structure with optional Signature field
Multiple Repeating Sectionslet Format = BinaryFormat.Record([ [Version, BinaryFormat.Byte, BinaryOccurrence.Required], [Items, BinaryFormat.List(BinaryFormat.Byte), BinaryOccurrence.Repea…

Items สามารถมี 0 ตัวขึ้นไป (Repeating) และ Footer อาจมีหรือไม่ (Optional)

fx
let
Format = BinaryFormat.Record([
[Version, BinaryFormat.Byte, BinaryOccurrence.Required],
[Items, BinaryFormat.List(BinaryFormat.Byte), BinaryOccurrence.Repeating],
[Footer, BinaryFormat.Text(2), BinaryOccurrence.Optional]
])
in
Format

ผลลัพธ์Binary format with repeating items and optional footer
ระบุประเภท Occurrence ในฟังก์ชัน Binary FormatBinaryFormat.Record([ [Header, BinaryFormat.Text(10), BinaryOccurrence.Required], [Comment, BinaryFormat.Text(50), BinaryOccurrence.Optional], [Records, BinaryF…

ทั้งสามประเภท (Required, Optional, Repeating) ใช้ร่วมกันในโครงสร้าง Binary เดียว

fx
=BinaryFormat.Record([
[Header, BinaryFormat.Text(10), BinaryOccurrence.Required],
[Comment, BinaryFormat.Text(50), BinaryOccurrence.Optional],
[Records, BinaryFormat.Record([…]), BinaryOccurrence.Repeating]
])

ผลลัพธ์Binary format specification

FAQs

ความต่างระหว่าง Optional กับ Repeating คืออะไร+

ผมอธิบายว่า Optional หมายถึง 0 หรือ 1 ครั้งเท่านั้น ส่วน Repeating หมายถึง 0 ครั้งขึ้นไป ถ้าเราต้องการให้มี 2 รายการขึ้นไป ต้องใช้ Repeating

ทำไมต้องใช้ BinaryOccurrence.Type ในการอ่าน Binary ไฟล์+

ผมพบว่า ถ้าไม่ระบุรูปแบบการปรากฏตัว Power Query อาจอ่านข้อมูลไม่ถูกต้อง หรืออาจติดขัดตอนมี Optional field ที่ไม่มี ดังนั้นการระบุให้ชัดเจนจะช่วยประหยัดเวลาแก้ไข

มี Enumeration value นอกจากสามตัวหลักนี้อีกหรือไม่+

ผมได้ลองตรวจสอบ และเท่าที่ทราบแล้ว BinaryOccurrence.Type มีแค่สามค่า: Optional, Required, และ Repeating เท่านั้น

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ BinaryOccurrence.Type จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้BinaryOccurrence.Typeenumerations
Binary functions (1)
Binary.View

Binary.View สร้างมุมมองของข้อมูลไบนารี่ตามรูปแบบที่ระบุ

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่