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

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

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

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

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

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

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับประเภทของการคำนวณ โปรดดู บล็อกของเรา(ลิงก์จะเปิดในหน้าต่างใหม่)

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

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

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

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

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

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

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

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

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

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

  • งานแนะนำหนังสือของผู้เขียน = {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 ของคุณหรือดูได้ที่ ดาวน์โหลดเวิร์กบุ๊กนี้ (ต้องมี Tableau Desktop 2020.2 หรือสูงกว่า เมื่ออยู่ในเวิร์กบุ๊ก ให้คลิกขวาที่การคำนวณในแผงข้อมูลแล้วเลือกแก้ไขเพื่อเปิดเครื่องมือแก้ไขการคำนวณแล้วดูคำอธิบายในความคิดเห็นของการคำนวณ)

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

รู้สึกเหมือนจมทะเลข้อมูลและต้องการถอยหลังสักก้าวใช่ไหม ลอง อย่ากลัวความสัมพันธ์

พร้อมจะสำรวจวิธีทำการวิเคราะห์ที่ซับซ้อนด้วยความสัมพันธ์แล้วใช่ไหม โปรดดู อย่ากลัวความสัมพันธ์ที่ลึกซึ้ง

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

และดูวิดีโอพอดคาสต์เกี่ยวกับความสัมพันธ์จากการวิเคราะห์การดำเนินการ(ลิงก์จะเปิดในหน้าต่างใหม่) เช่น เหตุใด Tableau จึงคิดค้น "ความสัมพันธ์" ขึ้น(ลิงก์จะเปิดในหน้าต่างใหม่) คลิก "วิดีโอพอดคาสต์" ในไลบรารี(ลิงก์จะเปิดในหน้าต่างใหม่)เพื่อดูเพิ่มเติม

ขอบคุณสำหรับข้อเสนอแนะของคุณส่งข้อเสนอแนะของคุณเรียบร้อยแล้ว ขอขอบคุณ