---
schema_version: "1"
id: b7850a9a42262855bbe9b5c6b3a9a5a087510f904cf36f97375e6ed197e31b7c
title: อย่ากลัวการคำนวณความสัมพันธ์
collection: tableau
version: next
locale: th-th
portal_url: https://docs.salesforce.com/tableau/next/th-th/pro/desktop/datasource_dont_be_scared_calcs.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/th-th/datasource_dont_be_scared_calcs.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 92c7735db105e71cd546dbafcfc913fcca3bfea15aa72b0706443e8c966719c0
description: Understand how calculations work in data sources that use relationships and table-level detail.
---
[ข้ามไปยังเนื้อหาหลัก](#main-content)

# อย่ากลัวการคำนวณความสัมพันธ์

แม้การคำนวณจะเป็นเรื่องที่น่ากลัว โดยเฉพาะการคำนวณในแหล่งข้อมูลที่ใช้ความสัมพันธ์ยิ่งทวีความน่ากลัวเป็นสิบๆ เท่า แต่คุณไม่จำเป็นต้องกลัวการคำนวณความสัมพันธ์เลย

**หมายเหตุ**: หากคุณยังไม่คุ้นเคยกับหลักการเบื้องหลังแหล่งข้อมูลที่ใช้ความสัมพันธ์ การอ่าน [อย่ากลัวความสัมพันธ์](https://help.tableau.com/v0.0/pro/desktop/th-th/datasource_dont_be_scared.htm) ก่อนเจาะลึกลงในหัวข้อนี้อาจช่วยคุณได้

## ประเภทการคำนวณ

**การคำนวณระดับแถว**คือการคำนวณระเบียนแต่ละรายการในข้อมูล ตัวอย่างเช่น การทำธุรกรรมด้านการขายแต่ละรายการล้วนมียอดขาย โดยราคาจะปรับเปลี่ยนตามเปอร์เซ็นของส่วนลด: `Price * (1- ZN([Discount]))` ซึ่งนี่เป็นการคำนวณการทำธุรกรรมแต่ละรายการแบบแถวต่อแถว ซึ่งผลลัพธ์ที่ได้ควรเป็นการเพิ่มคอลัมน์ใหม่ในแหล่งข้อมูลสำหรับยอดขาย

นอกจากนี้ยังมี**การคำนวณรวม**อีกด้่วย การคำนวณรวมจะคำนวณในระดับของรายละเอียดของการแสดงเป็นภาพ และค่าเหล่านั้นจะขึ้นอยู่กับโครงสร้างของมุมมอง การนับคือตัวอย่างของการคำนวณรวม ค่าของ `Count([Title])` ขึ้นอยู่กับว่าเราต้องการนับตามรูปแบบ ผู้เขียน หรือวันที่ขาย

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับประเภทของการคำนวณ โปรดดู [บล็อกของเรา](https://www.tableau.com/th-th/about/blog/2019/9/understanding-how-tableau-calculation-types-work-together)

## ตารางระดับของรายละเอียด

เนื่องจากตารางแต่ละรายการในแหล่งข้อมูล Tableau ล้วนมีระดับของรายละเอียดเป็นของตัวเอง ซึ่งทำให้ตารางที่เกี่ยวข้องกับการคำนวณมีผลกระทบเป็นอย่างยิ่ง ตัวอย่างเช่น ในอดีตที่ผ่านมาของ Tableau (ก่อน 2020.2 ช่วงก่อนความสัมพันธ์) จำนวนของระเบียนสามารถนับได้ด้วยการสร้างการคำนวณให้มีค่าคงที่เป็น `1` แล้วจึงรวมการคำนวณดังกล่าว `1` ถูกกำหนดให้กับแถวแต่ละแถวในแหล่งข้อมูล ดังนั้นผลรวมจึงเท่ากับจำนวนของแถว

แต่ตอนนี้การคำนวณดังกล่าวจะมีค่าเท่ากับ `1` เนื่องจากไม่มีระดับแบบสากลของรายละเอียดสำหรับแหล่งข้อมูลทั้งหมด และการคำนวณแบบคงที่ได้อยู่ในพื้นที่ที่ไม่ได้มอบหมายตรงด้านล่างของแผงข้อมูล ทำให้มีระดับของรายละเอียดเป็นของตัวเอง การสรุปผลของ `1` จึงเท่ากับ `1`

อย่างที่ได้กล่าวไว้ก่อนหน้านี้ว่าการคำนวณที่มีระดับของรายละเอียดเดียวกับตาราง มักเกิดขึ้นเพราะเป็นการคำนวณที่มีฟิลด์จากตาราง อยู่ในตารางในแผงข้อมูล ตัวอย่างเช่น การเชื่อมโยงของชื่อจริงและนามสกุลเพื่อให้ได้ชื่อเต็มของผู้เขียนแต่ละราย (ซึ่งเป็น `[First Name] + " " + [Last Name]`) จะอยู่ในตารางผู้เขียน

แต่หากเราต้องใช้ฟิลด์จากตารางต่างๆ ในการคำนวณรายการเดียว การคำนวณจะไปยังพื้นที่ที่ไม่ได้มอบหมายตรงด้านล่างของแผงข้อมูล ซึ่งเรียกว่าการคำนวณระดับแถวแบบข้ามตาราง ซึ่งต้องมีการรวมตารางในระดับแถวมาเกี่ยวข้องจึงอาจส่งผลกระทบต่อประสิทธิภาพได้ (ตรวจสอบให้แน่ใจว่าได้ตั้งค่าความไม่ซ้ำกันในตัวเลือกประสิทธิภาพของความสัมพันธ์แล้ว)

## การกำหนดระดับของรายละเอียด

เนื่องจากระดับของรายละเอียดของตารางเป็นสิ่งที่ควบคุมผลลัพธ์ที่แสดงของการคำนวณ การคำนวณในตารางที่เหมาะสมจึงเป็นสิ่งสำคัญ สามารถใช้นิพจน์ระดับรายละเอียด FIXED เพื่อดึงการคำนวณไปยังตารางที่เฉพาะเจาะจงได้ ฟิลด์นิพจน์จะถูกกำหนดไว้เพื่อ ([การประกาศมิติข้อมูล](https://help.tableau.com/current/pro/desktop/th-th/calculations_calculatedfields_lod.htm#lod-expression-syntax)) ระบุระดับของรายละเอียดของผลลัพธ์

### ตัวอย่าง: แนะนำหนังสือของผู้เขียน

**ถาม:** ผู้เขียนแต่ละรายต้องเข้าร่วมงานแนะนำหนังสือทั้งหมดกี่ครั้ง

**ตอบ:** ตัวเลขนี้ควร “เป็นของ” ผู้เขียนแต่ละราย ดังนั้นตัวเลขจึงต้องอยู่ที่ตารางผู้เขียน

- **งานแนะนำหนังสือของผู้เขียน** = `{FIXED [Author Name] : SUM([Book Tour Events])}`
- (สามารถคิดให้เป็นภาษาทั่วไปได้ เช่น “สำหรับนักเขียนแต่ละราย จำนวนงานแนะนำหนังสือทั้งหมดจะเชื่อมโยงกับตัวนักเขียนเหล่านั้น”)

**ถาม:** มีนักเขียนกี่รายที่ไม่เข้าร่วมงานแนะนำหนังสือ

**ตอบ:** ก็น่าลองคำนวณแบบนี้เหมือนกันนะ

- `COUNTD(IF ISNULL([Book Tour Events]) THEN ([Author Name]) END)`
- (สามารถคิดให้เป็นภาษาทั่วไปได้ เช่น “หากงานแนะนำหนังสือเป็น NULL ให้ส่งคืนค่าเป็นชื่อผู้เขียน นับชื่อผู้เขียนที่ไม่ซ้ำกัน”)

แต่ การคำนวณนี้เป็นการคำนวณระดับแถวแบบข้ามตารางเนื่องจากงานแนะนำหนังสือมาจากตารางซีรีส์ และชื่อผู้เขียนมาจากตารางผู้เขียน และการคำนวณแบบข้ามตารางดังกล่าวใช้การรวมภายใน ซึ่งหมายความว่าถ้าไม่มีค่าที่เกี่ยวข้องกันจากทั้งสองตาราง แถวจะถูกละทิ้งจากผลลัพธ์การรวม ซึ่งหมายความว่าเรากำลังขอให้ Tableau นับสิ่งที่ไม่มีอยู่จริง โปรดทราบว่าหากฟิลด์ทั้งสองฟิลด์อยู่ในตารางเดียวกัน วิธีนี้จะถือว่าเป็นวิธีที่ยอดเยี่ยม การคำนวณไม่ใช่เรื่องที่ไม่ดีเว้นแต่ข้อเท็จจริงที่ว่าการคำนวณเข้ากันได้ไม่ดีนักกับโครงสร้างของแหล่งข้อมูล

แต่เราต้องระบุการเข้าร่วมและการไม่เข้าร่วมงานแนะนำหนังสือของผู้เขียนแต่ละราย และเก็บผลลัพธ์ไว้ในตารางผู้เขียน เมื่อแฟล็กผู้เขียนแต่ละรายไว้เป็น “เข้าร่วมการแนะนำหนังสือ” หรือไม่เข้าร่วม เราจะสามารถนับจำนวนผู้ที่จัดงานแนะนำหนังสือได้

- **เป็นผู้เข้าร่วมงานแนะนำหนังสือหรือไม่** = `IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN "No" ELSE "Yes" END`
- (สามารถคิดให้เป็นภาษาทั่วไปได้ เช่น “สำหรับนักเขียนแต่ละราย ให้นับจำนวนงานแนะนำหนังสือ หากจำนวนนับเป็นศูนย์ ให้ทำป้ายกำกับผู้เขียนว่า ‘ไม่’ หรือทำป้ายกำกับว่า ‘ใช่’” การตั้งชื่อฟิลด์ว่า “เป็นผู้เข้าร่วมงานแนะนำหนังสือหรือไม่” จะทำให้คำว่าไม่และใช่ปรากฏขึ้นโดยเรียงกันเป็นแถว)

ทำให้ตอนนี้เราสามารถนับจำนวนของผู้ที่เป็นไม่ และตอบคำถามแรกเริ่มได้

หากการคำนวณของเราคือ**ผู้เขียนที่ไม่มีการแนะนำหนังสือ** = `IF [Book tour participant?]= "No" THEN ([Author Name]) END` เราจะได้รายชื่อของผู้เขียนที่ไม่จัดงานแนะนำหนังสือ (ซึ่งคิดได้เป็น “สำหรับผู้เขียนทุกรายที่เป็นผู้เข้าร่วมงานแนะนำหนังสือหรือไม่ เป็นไม่ ให้ระบุชื่อของผู้เขียน”)

หากการคำนวณของเราเป็น `COUNTD(IF [Book tour participant?]= "No" THEN ([Author Name]) END)` เราจะได้คำตอบเป็นตัวเลขที่จะอยู่ในพื้นที่ที่ไม่ได้มอบหมายตรงด้านล่างของแผงข้อมูล เพราะเหตุใด เนื่องจากการคำนวณเป็นแบบรวม

**คำถามโบนัส:**

เป็นไปได้หรือไม่ที่การใช้การคำนวณโครงสร้างของ เป็นผู้เข้าร่วมงานแนะนำหนังสือหรือไม่ โดยตรงจะสามารถส่งคืนรายชื่อของผู้เขียนได้ `IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN ([Author Name]) END` การคำนวณนี้จะอยู่ตรงส่วนใดของแผงข้อมูล เพราะเหตุใด ลองคำนวณได้ในสำเนา Tableau Desktop ของคุณหรือดูได้ที่ [ดาวน์โหลดเวิร์กบุ๊กนี้](https://help.tableau.com/samples/en-us/bookshop/dontbescared_calcs.twbx) (ต้องมี Tableau Desktop 2020.2 ขึ้นไป เมื่ออยู่ในเวิร์กบุ๊ก ให้คลิกขวาที่การคำนวณในแผงข้อมูลแล้วเลือกแก้ไขเพื่อเปิดเครื่องมือแก้ไขการคำนวณแล้วดูคำอธิบายในความคิดเห็นของการคำนวณ)

## แหล่งข้อมูลที่เกี่ยวข้อง

รู้สึกเหมือนจมทะเลข้อมูลและต้องการถอยหลังสักก้าวใช่ไหม ลอง [อย่ากลัวความสัมพันธ์](https://help.tableau.com/v0.0/pro/desktop/th-th/datasource_dont_be_scared.htm)

พร้อมจะสำรวจวิธีทำการวิเคราะห์ที่ซับซ้อนด้วยความสัมพันธ์แล้วใช่ไหม โปรดดู [อย่ากลัวความสัมพันธ์ที่ลึกซึ้ง](https://help.tableau.com/v0.0/pro/desktop/th-th/datasource_dont_be_scared_deeper.htm)

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการสนับสนุนทางเทคนิคของความสัมพันธ์จากทีมการจัดการผลิตภัณฑ์โดยตรง โปรดดู ชุดข้อมูลเกี่ยวกับความสัมพันธ์ในบล็อก Tableau

- [ความสัมพันธ์ ตอนที่ 1: แนะนำการสร้างแบบจำลองข้อมูลใหม่ใน Tableau](https://www.tableau.com/th-th/about/blog/2020/5/relationships-part-1-meet-new-tableau-data-model)
- [ความสัมพันธ์ ตอนที่ 2: คำแนะนำและเคล็ดลับ](https://www.tableau.com/th-th/about/blog/2020/5/relationships-part-2-tips-and-tricks)
- [ความสัมพันธ์ ตอนที่ 3: การถามคำถามในตารางที่เกี่ยวข้องหลายตาราง](https://www.tableau.com/th-th/about/blog/2020/6/relationships-part-3-asking-questions-across-multiple-related-tables)

และดูวิดีโอพอดคาสต์เกี่ยวกับความสัมพันธ์จาก[การวิเคราะห์การดำเนินการ](https://action-analytics.com/library/) เช่น [เหตุใด Tableau จึงคิดค้น "ความสัมพันธ์" ขึ้น](https://action-analytics.com/ep-1-why-did-tableau-invent-relationships/) คลิก "วิดีโอพอดคาสต์" ใน[ไลบรารี](https://action-analytics.com/library/)เพื่อดูเพิ่มเติม