---
title: BinaryOccurrence.Type – ระบุจำนวนครั้งที่คาดว่าข้อมูลจะปรากฏในรูปแบบ Binary
url: https://www.thepexcel.com/functions/power-query/enumerations/binaryoccurrence-type/
type: function-explainer
program: Power Query
syntax: "BinaryOccurrence.Optional | BinaryOccurrence.Required | BinaryOccurrence.Repeating"
date: 2025-12-04
updated: 2025-12-26
scores:
  popularity: 2
  difficulty: 2
  usefulness: 2
---

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

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

## คำอธิบาย

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

## Syntax

```excel
BinaryOccurrence.Optional | BinaryOccurrence.Required | BinaryOccurrence.Repeating
```

## Arguments

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

## ตัวอย่าง

### 1. อ่านไฟล์ Binary ที่มี Header และ Records

```excel
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, ...}]`

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

### 2. Optional Field ในโครงสร้าง Binary

```excel
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`

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

### 3. Multiple Repeating Sections

```excel
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`

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

### 4. ระบุประเภท Occurrence ในฟังก์ชัน Binary Format

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

**ผลลัพธ์:** `Binary format specification`

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

## หมายเหตุเพิ่มเติม

- ผมแนะนำให้ใช้ Required สำหรับส่วน Header หรือ ID ที่จำเป็น เพราะจะช่วยตรวจจับปัญหาได้เร็วกว่า

- ส่วนตัวผม เมื่ออ่านไฟล์ที่มี Array หรือ List ข้อมูล มักจะใช้ Repeating เพราะข้อมูลอาจเป็นหลายรายการในไฟล์เดียว

- ผมเคยนำ Optional มาใช้เพื่อรองรับหลายเวอร์ชันของไฟล์ Binary ที่บางเวอร์ชันมี Metadata บางเวอร์ชันไม่มี

## คำถามที่พบบ่อย

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

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

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

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

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

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

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: BinaryOccurrence.Type](https://learn.microsoft.com/en-us/powerquery-m/BinaryOccurrence.Type) _(official)_
- [Power Query M Function Reference](https://learn.microsoft.com/en-us/powerquery-m/) _(official)_

---

_Source: [https://www.thepexcel.com/functions/power-query/enumerations/binaryoccurrence-type/](https://www.thepexcel.com/functions/power-query/enumerations/binaryoccurrence-type/)_
