---
title: Tables.GetRelationships – ดึงข้อมูลความสัมพันธ์ระหว่างตาราง
url: https://www.thepexcel.com/functions/power-query/table-functions/tables-getrelationships/
type: function-explainer
program: Power Query
syntax: "Tables.GetRelationships(tables as table, optional dataColumn as nullable text) as table"
date: 2025-12-06
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 4
  usefulness: 6
---

# Tables.GetRelationships – ดึงข้อมูลความสัมพันธ์ระหว่างตาราง

> Tables.GetRelationships ดึงข้อมูลความสัมพันธ์ (Relationships) ระหว่างตารางต่างๆ จาก Navigation Table

## คำอธิบาย

Tables.GetRelationships ดึงข้อมูลความสัมพันธ์ (Relationships) ระหว่างตารางต่างๆ จาก Navigation Table เพื่อวิเคราะห์โครงสร้างข้อมูล

## Syntax

```excel
Tables.GetRelationships(tables as table, optional dataColumn as nullable text) as table
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| tables | Yes | table |  | ตารางที่มีโครงสร้างคล้าย Navigation Table (มีคอลัมน์ที่อ้างถึงตาราง Data ตัวจริง) |
| dataColumn | No | nullable text | null | ชื่อคอลัมน์ที่ใช้บ่งชี้ตาราง Data ตัวจริง หากไม่ระบุ จะใช้ค่า Default |

## เคสการใช้งาน

### Data Model Inspection

Data Model Inspection

### Metadata Analysis

Metadata Analysis

## ตัวอย่าง

### 1. ดึงความสัมพันธ์จาก Navigation Table พื้นฐาน

```excel
let
    NavTable = #sections,
    Relationships = Tables.GetRelationships(NavTable, "Data")
in
    Relationships
```

**ผลลัพธ์:** `ตารางแสดงข้อมูลความสัมพันธ์ระหว่างตารางต่างๆ เช่น FromTable, ToTable, FromColumn, ToColumn, Kind`

ใช้ Tables.GetRelationships เพื่อดึงข้อมูลความสัมพันธ์จาก Navigation Table โดยระบุ "Data" เป็นคอลัมน์ที่บ่งชี้ตาราง Data ตัวจริง

### 2. สร้าง Relationship Metadata Report ที่อ่านง่าย

```excel
let
    Source = #sections,
    RelationshipInfo = Tables.GetRelationships(Source, "Data"),
    ExpandedFromTable = Table.ExpandTableColumn(
        RelationshipInfo, 
        "FromTable", 
        {"Name"}, 
        {"FromTableName"}
    ),
    FinalReport = Table.SelectColumns(
        ExpandedFromTable, 
        {"FromTableName", "ToTable", "FromColumn", "ToColumn", "Kind"}
    )
in
    FinalReport
```

**ผลลัพธ์:** `ตาราง Metadata ที่เรียบเรียง มีคอลัมน์: FromTableName, ToTable, FromColumn, ToColumn, Kind`

ขยาย FromTable เพื่อได้ชื่อตารางจริง แล้วเลือกคอลัมน์ที่สำคัญเพื่อให้ Report อ่านง่ายและเข้าใจความสัมพันธ์ได้ชัดเจน

### 3. ตรวจสอบว่ามีความสัมพันธ์หรือไม่

```excel
let
    Source = #sections,
    Relationships = Tables.GetRelationships(Source, "Data"),
    RelationshipCount = Table.RowCount(Relationships),
    HasRelationships = RelationshipCount > 0
in
    HasRelationships
```

**ผลลัพธ์:** `true (ถ้ามีความสัมพันธ์) หรือ false (ถ้าไม่มี)`

นับจำนวน Row ในตาราง Relationships เพื่อบอกว่าข้อมูลมีการเชื่อมต่อกันหรือเป็น Orphan Tables

### 4. กรองความสัมพันธ์ที่สำคัญเท่านั้น

```excel
let
    Source = #sections,
    AllRelationships = Tables.GetRelationships(Source, "Data"),
    ActiveOnly = Table.SelectRows(
        AllRelationships, 
        each [Kind] = "1:1" or [Kind] = "1:*"
    )
in
    ActiveOnly
```

**ผลลัพธ์:** `ตารางที่มีเฉพาะความสัมพันธ์ Active ประเภท 1:1 หรือ 1:* ไม่มี Inactive Relationships`

กรองเฉพาะความสัมพันธ์ที่ Active เพื่อหลีกเลี่ยง Inactive Relationships ที่อาจทำให้ Report สับสน

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

- ผมแนะนำให้ใช้ Tables.GetRelationships ร่วมกับ Table.ExpandTableColumn เพื่อแสดงข้อมูลที่ซ่อนอยู่ในคอลัมน์ Table ให้เป็นคอลัมน์ปกติที่อ่านง่าย

- ส่วนตัวผมชอบใช้เพื่อสร้าง Data Lineage Report หรือ Metadata Documentation เพื่อแสดงให้ทีมอื่นเห็นว่าข้อมูลเชื่อมต่อกันยังไง

- ผลลัพธ์มักจะเป็นตารางที่มีคอลัมน์: FromTable, ToTable, FromColumn, ToColumn, Kind - ลองเล่นกับ Table.TransformColumnNames หรือ Table.RenameColumns เพื่อทำให้ชื่อคอลัมน์เหมาะสมกับภาษาไทย

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

**Q: Tables.GetRelationships จะทำงานได้ดีกับตาราง input ประเภทไหน?**

ฟังก์ชันนี้ออกแบบมาสำหรับ Navigation Table หรือตารางที่มีคอลัมน์อ้างถึง Data Table ตัวจริง ผมแนะนำให้ตรวจสอบก่อนว่า Table structure มีคอลัมน์ที่เก็บ Table references ไว้หรือเปล่า ถ้าไม่มี ฟังก์ชันอาจคืนค่าว่างหรือข้อผิดพลาดได้

**Q: ความแตกต่างระหว่าง Tables.GetRelationships กับการเขียน Relationship ด้วยตนเอง คืออะไร?**

Tables.GetRelationships อ่าน Metadata ของความสัมพันธ์ที่มีอยู่แล้วโดยอัตโนมัติ ซึ่งสะดวกกว่าการต้องเขียน Hard-code แต่ถ้าต้องการสร้างความสัมพันธ์ใหม่ ก็ต้องใช้วิธีอื่น เช่น Table.AddColumn หรือการสร้าง Custom Relationship

**Q: ถ้าไม่ระบุ dataColumn parameter จะเกิดอะไรขึ้น?**

ฟังก์ชันจะพยายามใช้ค่า Default ของคอลัมน์ที่ระบุถึง Data Table โดยทั่วไปจะเป็น "Data" ถ้าหากไม่พบคอลัมน์ที่ถูกต้อง อาจคืนค่าว่างหรือ Error โดยปลอดภัยก็เลย

**Q: ฟังก์ชันนี้ใช้งานได้กับ Power BI Model Metadata ไหม?**

ส่วนใหญ่ Tables.GetRelationships ใช้กับ Navigation Tables ใน Power Query นะครับ สำหรับการอ่าน Relationship Metadata จากตัว Power BI Model เอง ต้องใช้ API หรือ Tools อื่นๆ แทน

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

- [Microsoft Learn: Tables.GetRelationships](https://learn.microsoft.com/en-us/powerquery-m/tables-getrelationships) _(official)_
- [Power Query M Function Reference - Table Functions](https://learn.microsoft.com/en-us/powerquery-m/table-functions) _(official)_
- [Creating Navigation Tables in Power Query](https://learn.microsoft.com/en-us/powerquery-m/tables-navigation) _(official)_

---

_Source: [https://www.thepexcel.com/functions/power-query/table-functions/tables-getrelationships/](https://www.thepexcel.com/functions/power-query/table-functions/tables-getrelationships/)_
