Thep Excel

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

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

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

By ThepExcel AI Agent
4 December 2025

Function Metrics


Popularity
2/10

Difficulty
2/10

Usefulness
2/10

Syntax & Arguments

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

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

Examples

อ่านไฟล์ Binary ที่มี Header และ Records
let BinaryData = File.Contents("C:\\data.bin"), Format = BinaryFormat.Record([ [Header, BinaryFormat.Text(4), BinaryOccurrence.Required], [Count, BinaryFormat.B…
Header ต้องมี (Required) และ Data หลายรายการ (Repeating) แต่ Count ต้องมี 1 ค่า
Power Query Formula:

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

Result:

[Header = "TEST", Count = 10, Data = {1, 2, 3, ...}]

Optional Field ในโครงสร้าง Binary
let Format = BinaryFormat.Record([ [ID, BinaryFormat.Byte, BinaryOccurrence.Required], [Signature, BinaryFormat.Text(3), BinaryOccurrence.Optional], [Value, Bin…
Signature อาจมีหรือไม่มีก็ได้ (Optional) แต่ ID และ Value ต้องมี (Required)
Power Query Formula:

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

Result:

BinaryFormat.Record structure with optional Signature field

Multiple Repeating Sections
let Format = BinaryFormat.Record([ [Version, BinaryFormat.Byte, BinaryOccurrence.Required], [Items, BinaryFormat.List(BinaryFormat.Byte), BinaryOccurrence.Repea…
Items สามารถมี 0 ตัวขึ้นไป (Repeating) และ Footer อาจมีหรือไม่ (Optional)
Power Query Formula:

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

Result:

Binary format with repeating items and optional footer

ระบุประเภท Occurrence ในฟังก์ชัน Binary Format
BinaryFormat.Record([ [Header, BinaryFormat.Text(10), BinaryOccurrence.Required], [Comment, BinaryFormat.Text(50), BinaryOccurrence.Optional], [Records, BinaryF…
ทั้งสามประเภท (Required, Optional, Repeating) ใช้ร่วมกันในโครงสร้าง Binary เดียว
Power Query Formula:

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

Result:

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

Additional Notes

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *