Learning Tableau: Chapter 5 การคำนวณระดับตาราง (Table Calculations)
Topics Overview Quick table calculations Relative vs Fixed Scope and Direction Addressing and Partitioning Custom table calculations Examples Data densification
1. Overview การคำนวณแบบตาราง เป็นเครื่องมือที่ทรงพลังของ Tableau ใช้จัดการกับข้อมูลที่ไม่มีโครงสร้างข้อมูลที่ดี โดยไม่ต้องรอคนมาแก้ข้อมูลที่ Data source การคำนวณแบบตารางอาจจะง่ายมาก ๆ จนไปถึง ซับซ้อนมาก ๆ (เช่น ต้อง เข้าใจเรื่องการให้ที่อยู่, การแบ่งข้อมูลเป็นส่วน, และ ทำให้ข้อมูลหนาแน่นขึ้น บทนี้จะใช้ Data เดิม เหมือนบทที่แล้ว
Dataset
Overview of Table Calculations Row-level/Aggregate เป็นการคำนวณที่ data source เลย การคำนวณระดับตารางจะเป็นการคำนวณกับตารางข้อมูลใน Cache หลังจาก Query
Overview of Table Calculations Aggregation การคำนวณตารางจะคำนวณบนกลุ่มของข้อมูล (Aggregate data) ทุก field ในการคำนวณตารางจะต้องเป็น Aggregate field Filter Filter แบบปกติจะกรองข้อมูลก่อนการคำนวณตาราง สามารถใช้การคำนวณตารางเป็นการกรองข้อมูลได้เหมือนกัน โดยมีลำดับการ คำนวณดังนี้ Row-level / aggregate filter ที่ถูกใช้ก่อน จากนั้น ค่อยการคำนวณตาราง
การสร้างการคำนวณระดับตาราง มีหลายวิธี เมนู Drop-down ข้าง ๆ field ที่เป็นตัวเลขและเป็นแบบ aggregate ใน view จากนั้นเลือก Quick Table Calculation หรือ เลือก Add Table Calculation สร้าง Calculated field และ ใช้ function สำหรับคำนวณระดับ ตารางเพื่อสร้างการคำนวณระดับตารางด้วยตนเอง
Topics Overview Quick table calculations Relative vs Fixed Scope and Direction Addressing and Partitioning Custom table calculations Examples Data densification
Quick table calculations เป็นการคำนวณระดับตารางที่ Tableau เตรียมไว้ให้ สามารถใช้คำนวณกับ field ใด ๆ ที่เป็น measurement ใน view ตัวอย่าง : Running Total, Difference, Percent Different, Moving Average, YTD total, YTD Growth
ลองทำดู Double click เพื่อดูสูตร ลากไปที่ Data pane จะกลายเป็น field ที่ใช้ ต่อใน view อื่น
ตัวอย่าง Quick table calculation
Topics Overview Quick table calculations Relative vs Fixed Scope and Direction Addressing and Partitioning Custom table calculations Examples Data densification
Relative vs Fixed computation การคำนวณสัมพันธ์กับ layout ของตาราง การคำนวณใช้ data อย่างน้อย 1 dimension แม้ layout ของ view จะเปลี่ยนไป, Scope กับ Direction ก็ยังสัมพันธ์กับตารางแบบเดิม Scope กับ Dimension จะคงที่กับ dimension นั้น ๆ ไม่ว่า dimension จะถูกย้ายไปไหน
Topics Overview Quick table calculations Relative vs Fixed Scope and Direction Addressing and Partitioning Custom table calculations Examples Data densification
Scope and direction ใช้อธิบายวิธีการคำนวณระดับตารางว่ามีความสัมพันธ์กับตารางอย่างไร เมื่อการคำนวณระดับตารางของเราขึ้นกับ layout ของตาราง, การเปลี่ยน view จะไม่เปลี่ยน scope และ direction Scope = ขอบเขตของข้อมูลในตารางที่ถูกใช้สำหรับการคำนวณ Direction = ทิศทางการอ่านข้อมูลภายใน Scope เพื่อประมวลผล นิยาม Scope และ direction โดยเลือก drop-down menu ที่ Field ใน View แล้วเลือก “Compute Using”
Table -> ข้อมูลทั้งหมด Cell -> ข้อมูลระดับเล็กที่สุดใน View Pane -> ข้อมูลเล็กระดับที่สามใน View (1 pane นิยามโดย Year กับ Region)
Scope & Direction Examples 1. ใส่ field YEAR(Order Date) and QUARTER(Order Date) ที่ Rows 2. ใส่ field Region, and Department ที่ Columns 3. สร้าง calculated field อันใหม่ชื่อ Index 4. ใส่ Function Index() ให้ field ข้อ 3 (Function นี้จะเริ่มจาก 1 และเพิ่มทีละ 1 เมื่อมันเคลื่อนที่ไปเรื่อย ๆ ) 5. ในตัวอย่างนี้เราจะใส่ field Index ใน shelf Text (แทนที่จะใส่ Sale เหมือนตัวอย่างใน Slide ที่แล้ว) 6. ใช้ drop-down ที่ field index | “Compute Using” | แล้ว ลองเลือกหลาย ๆ แบบ พร้อมดูผลลัพธ์
Table (across)
Table (down)
Table (across then down)
Pane (across)
Pane (down)
Pane (across then down)
Scope and Direction ใช้ scope & direction ได้กับทุก ๆ การคำนวณระดับตาราง ลองนึกดูว่าหากเราจะหา percent ความแตกต่างระหว่าง cell, การเลือก scope และ direction จะให้ค่าต่างกันอย่างไร ? Scope & direction จะทำงานสัมพันธ์กับ layout ของตาราง หากเรา จัดลำดับ Field ของเราใหม่, การคำนวณยังคำเป็น Scope กับ Direction เดิมอยู่ เช่น หากเราลองสลับ Year of Order Date กับ Department การ คำนวณ index ก็ยังเป็นไปตาม scope และ direction ที่เรานิยามไว้ ตั้งแต่ต้น
Topics Overview Quick table calculations Relative vs Fixed Scope and Direction Addressing and Partitioning Custom table calculations Examples Data densification
Addressing & Partitioning คล้าย scope กับ direction ใช้เมื่อเราจะคำนวณระดับตารางโดยอ้างอิงไปที่ข้อมูลใน cell เฉพาะ cell ใด cell หนึ่ง เราระบุ addressing โดยเลือก dimension ใน view, dimension ที่เหลือคือ partitioning การคำนวณระดับตารางจะไม่สัมพันธ์กับ layout ของตาราง ดังนั้น Address กับ Partition จะช่วยให้รวมควบคุมข้อมูลสำหรับการคำนวณ ได้ดีกว่า
Example ใช้ View จากตัวอย่างที่แล้ว เลือก Edit Table Calculation จาก drop-down menu ของ field Index ที่อยู่ใน Text | Check Department ใต้ Specific Dimension
Example จากตัวอย่าง คือ เราเลือก Department สำหรับ Addressing (การให้ ที่อยู่) Dimension อื่น ๆ คือ Partitioning (การแบ่งส่วนที่ Address จะ ถูกเริ่มนับใหม่) แม้ผลลัพธ์จะดูคล้าย Pane (across) แต่ความแตกต่างคือ ตอนจัดเรียง dimension ของ view ใหม่ หาก Pane (across), ไม่ว่าจะจัดเรียง dimension ใหม่อย่างไร การคำนวณก็ ยังเป็นแบบ Pane (across) แต่หากใข้ dimension เป็น addressing, การคำนวณจะไม่เหมือน Pane (across แล้ว), Index ก็จะเพิ่มตาม Department อย่างเดิม
ผลการสลับ Row กับ Columns ที่ Toolbar
Advanced addressing & partitioning ให้ swap rows กับ columns กลับไปอย่างเดิม เลือก Quarter of Order Date สำหรับ Addressing ด้วย สังเกต Highlight สีเหลืองที่ Partition
Advanced addressing & partitioning แต่ถ้าเลือก Department กับ Year of Order Date เป็น Addressing สังเกต Highlight สีเหลืองที่ Partition
Topics Overview Quick table calculations Relative vs Fixed Scope and Direction Addressing and Partitioning Custom table calculations Examples Data densification
Custom table calculations เราสามารถคำนวณระดับตารางของเราเองได้ แทน quick table calculation ในแต่ละตัวอย่างในหัวข้อ Custom table calculations นี้ เราจะเลือก Compute Using | Category Department จะเป็น partition แทนการเป็น address แล้ว ประเภทของ function สำหรับคำนวณระดับตาราง Meta table functions, Lookup and Previous Value, Running functions, Window functions, Rank functions, R Script functions, Total
Meta Table Functions เป็น function ที่ให้ข้อมูลเกี่ยวกับ partitioning / addressing เช่น Index, First, Last, Size
Lookup and Previous Value Lookup() ใช้ตอนเราอ้างอิงไปยัง Cell อื่น เช่น Lookup(ATTR([Category]), -1) Previous_Value() ใช้ทดค่าจากคราวที่แล้วไปเรื่อย ๆ เช่น Previous_Value(“”) + “,” + ATTR([Category])
Running functions Running_Avg Running_Count Running_Sum Running_Min Running_Max
Window functions Functions แบบ Window function จะคำนวณทุก ๆ แถวใน partition นั้น Window_sum, Window_Avg, Window_Max, Window_Min
Rank functions
Other functions R Script Functions Total ทำให้เรารวม R กับ Tableau ได้ ไม่ได้ทำงานกับข้อมูลใน cache จะ Query ข้อมูลใหม่ แล้วค่อยรวมค่าใน partition หนึ่ง Total(SUM([Sales])) จะให้ค่าเดียวกับ Window_Sum(SUM([Sales]))
Topics Overview Quick table calculations Relative vs Fixed Scope and Direction Addressing and Partitioning Custom table calculations Examples Data densification
Year – over – Year growth เป็น Option หนึ่งใน Quick Table Calculation field Sum(Sales) field ที่สอง ใส่ Year-over-Year growth และ เปลี่ยนชนิดของ mark เป็น Bar
Ranking within higher levels
Ranking within higher levels สังเกตว่า ตัวอย่างที่แล้ว แม้เราจะ Sort Department ตาม Sum of Sale แต่ Technology ดันมาก่อนทุกที เพราะ Tableau sort Sale ในทุก ๆ level (ผลรวมของทุก ๆ Technology จะมากกว่าใครหากรวมทุก Region) หากต้องการให้ Sort เฉพาะ region นั้น ๆ สร้าง Adhoc calculated field (เปลี่ยนให้เป็น discrete ด้วย) ย้าย field ในข้อที่หนึ่งไปทางซ้ายของ Department
คราวนี้จะได้รูปด้านล่าง เพราะ Tableau จะ Sort ตาม Header จาก ซ้ายไปขวา (Region -> RANK -> Department) ซ่อน RANK header โดย drop-down list | uncheck Show Row Headers
Late filtering รูปนี้เรา file เอา department Office supplies ออก ดังนั้น การคิด % มันจะคิดแค่ Furniture กับ Technology เท่านั้น แต่จริง ๆ แล้วเราอยากคิด % โดยรวมของ Office Supplies ด้วย (แต่ ยังคง Filter Office Supplies ออกเหมือนเดิม)
Late Filter ปัญหา : Tableau Filter Office supplies ออกจาก cache ก่อน แล้วหา % วิธีแก้ : เราต้องคิด % ก่อนที่ค่อย Filter ให้สร้าง calculated field ชื่อ Department (late filter) โดยใช้ code LOOKUP(ATTR([Department]), 0) และ นำไปวางที่ shelf filter แทน dimension Department ดังนั้น dimension ไม่ถูก filter ออก ทำให้รวมในการคิด % ได้ ที่ถูก filter คือ ค่าจากการ lookup อีกที