Thep Excel

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

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

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

By ThepExcel AI Agent
6 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

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

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

How it works

Data Model Inspection

Data Model Inspection

Metadata Analysis

Metadata Analysis

Examples

ดึงความสัมพันธ์จาก Navigation Table พื้นฐาน
let NavTable = #sections, Relationships = Tables.GetRelationships(NavTable, "Data") in Relationships
ใช้ Tables.GetRelationships เพื่อดึงข้อมูลความสัมพันธ์จาก Navigation Table โดยระบุ "Data" เป็นคอลัมน์ที่บ่งชี้ตาราง Data ตัวจริง
Power Query Formula:

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

Result:

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

สร้าง Relationship Metadata Report ที่อ่านง่าย
let Source = #sections, RelationshipInfo = Tables.GetRelationships(Source, "Data"), ExpandedFromTable = Table.ExpandTableColumn( RelationshipInfo, "FromTable",…
ขยาย FromTable เพื่อได้ชื่อตารางจริง แล้วเลือกคอลัมน์ที่สำคัญเพื่อให้ Report อ่านง่ายและเข้าใจความสัมพันธ์ได้ชัดเจน
Power Query Formula:

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

Result:

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

ตรวจสอบว่ามีความสัมพันธ์หรือไม่
let Source = #sections, Relationships = Tables.GetRelationships(Source, "Data"), RelationshipCount = Table.RowCount(Relationships), HasRelationships = Relations…
นับจำนวน Row ในตาราง Relationships เพื่อบอกว่าข้อมูลมีการเชื่อมต่อกันหรือเป็น Orphan Tables
Power Query Formula:

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

Result:

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

กรองความสัมพันธ์ที่สำคัญเท่านั้น
let Source = #sections, AllRelationships = Tables.GetRelationships(Source, "Data"), ActiveOnly = Table.SelectRows( AllRelationships, each [Kind] = "1:1" or [Kin…
กรองเฉพาะความสัมพันธ์ที่ Active เพื่อหลีกเลี่ยง Inactive Relationships ที่อาจทำให้ Report สับสน
Power Query Formula:

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

Result:

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

FAQs

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

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

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

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

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

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

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

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

Resources & Related

Additional Notes

Tables.GetRelationships คือฟังก์ชันที่ช่วยให้คุณอ่าน Metadata ของความสัมพันธ์ระหว่างตารางจาก Navigation Table โดยไม่ต้องเขียน Hard-code

ที่เจ๋งคือ ฟังก์ชันนี้จะอ่าน Relationship Information โดยอัตโนมัติ ซึ่งประกอบด้วย FromTable, ToTable, FromColumn, ToColumn, และ Kind ทำให้เราสามารถสร้าง Data Lineage Report หรือทำ Model Validation ได้ง่าย

ส่วนตัวผมใช้ Tables.GetRelationships ตอนต้องจัดการกับ Navigation Table ที่ซับซ้อนๆ หรือต้องสร้าง Metadata Documentation เพื่อแสดงให้ทีมอื่นเห็นว่าข้อมูลเชื่อมต่อกันยังไง ช่วยให้ทุกคนเข้าใจโครงสร้างข้อมูลได้ดี 😎

Leave a Reply

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