# การใช้ฟังก์ชัน 'Describe' ในการสำรวจข้อมูล และ 
การเลือกข้อมูลที่จำเป็นในการวิเคราะห์ Part II

![20.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1658461415955/_DETDQgz4.png align="center")

หลังจากที่เราสำรวจข้อมูลกันมาพอสมควรแล้ว ว่า มี Field ข้อมูลใดบ้างที่จะสามารถนำมาใช้ในการวิเคราะห์ข้อมูลตามโจทย์คำถามต่างๆ ที่เราต้องการค้นหาคำตอบ 

คำถามในขั้นตอนถัดไป คือ 

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

เพราะหากเรายิ่งเชื่อมต่อข้อมูลมากเท่าไหร่ โปรแกรม Tableau ก็ยิ่งต้องใช้ทรัพยากรในการคำนวณต่างๆ มากขึ้น ไม่ว่าจะเป็น Calculated field ต่างๆ หรือในเรื่องของข้อมูลที่อาจเกิดการซ้ำซ้อน (Duplicate) เกิดขึ้น จากการเชื่อมต่อข้อมูลด้วยหลายๆ Field มากจนเกินความจำเป็น

![13.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656861113218/yeNWMnZ5F.png align="center")

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

> เรากำลังสูญเสียทรัพยากร (Wasting resources) ที่เรามีอยู่ แทนที่จะสามารถนำข้อมูลเท่าที่จำเป็นต้องใช้เหล่านั้นไปเพิ่มประสิทธิภาพในการวิเคราะห์ข้อมูลแทน

ดังนั้น Step ขั้นตอนที่สำคัญในการจัดการข้อมูลตามประเด็นที่กล่าวมาข้างต้นนี้ สามารถนำ 4 ขั้นตอนนี้มาประยุกต์ใช้ได้  

1.  Focus on User Performance
2. Minimizing Joined Tables
3. Using a data source filter
4. Creating an extract : Use Extracts, but Limit Size

## 1. มุ่งเน้นที่ประสิทธิภาพของผู้ใช้ (Focus on User Performance)

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

> ข้อมูลที่ไม่จำเป็นเหล่านี้เอง  จะทำให้ทั้งโปรแกรม Tableau และผู้ใช้งานทำงานได้ช้าลงในที่สุด                                                                                 
     (Unnecessary data ultimately slows down both Tableau and the user.)

เมื่อเราสร้าง workbook ครั้งแรก เรามักเชื่อมต่อกับข้อมูลให้ได้มากที่สุดเท่าที่จะทำได้ เพราะเราเองก็ไม่แน่ใจว่าเราต้องการนำ Field ข้อมูลใดบ้างมาใช้

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

![17.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656864977073/W0kmvnoJR.png align="center")

## 2. เชื่อมต่อตารางข้อมูลเท่าที่จำเป็น (Minimizing Joined Tables)

การเชื่อมต่อข้อมูลนั้น เป็นเรื่องที่สำคัญมากๆ เพราะหากเราเชื่อมต่อข้อมูลไม่ถูกต้อง หรือทำการเลือกใช้ Field มากจนเกินความจำเป็น อาจนำไปสู่ปัญหาการเกิดข้อมูลซ้ำซ้อน (Duplicate Data) ในที่นี้ขอยกตัวอย่างกรณีศึกษา เพื่อให้เกิดความเข้าใจมากขึ้น

> สมมติว่าเรามีข้อมูลอยู่ 2 ตาราง คือ **Table A** และ **Table B** ดังรูปด้านล่าง
โดยมี Primary key เป็น Field --> id

![14.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656863608023/_I2EdRUIc.png align="center")

หากเราลอง Join ทั้ง 2 Tables นี้ แล้วเรียก Field ทั้งหมดออกมาดูจะได้ ผลลัพธ์ดังนี้

```SQL 
SELECT * 
FROM Table_A AS  a 
JOIN Table_B AS  b   on   a.id  =  b.id
```

![15.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656864013357/0fWshgSeP.png align="center")

> จะสังเกตเห็นได้ว่า ข้อมูลทุกแถว (Row) นั้น ไม่ซ้ำกัน

แต่หากเราลองเขียนคำสั่งใหม่ โดยเลือกให้แสดงผลแค่ Field --> a.id, a.Field1,  b.Field2 ด้วยคำสั่งนี้

```SQL 
SELECT a.id, a.Field1,  b.Field2
FROM Table_A  AS  a
JOIN Table_B  AS  b     on a.id  =  b.id
```

![16.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656864196017/H7sQdl1gP.png align="center")

เราจะพบว่า ในแถวที่ 1 และ 2 นั้น มีข้อมูลซ้ำกัน (Duplicate Data) นี่เป็นหนึ่งในตัวอย่างกรณีที่อาจเกิดขึ้นได้จากการ Join ข้อมูล แต่ทั้งนี้ ตามกรณีดังกล่าว เราทราบว่าทั้ง 2 rows ที่ปรากฏนี้ แท้จริงแล้วไม่ซ้ำ เพราะมีข้อมูลใน Column ของ Field3 

> ดังนั้น หลังจากที่เรา Join ข้อมูลเรียบร้อยแล้ว การทวนสอบข้อมูลก็เป็นเรื่องที่สำคัญเช่นกัน ว่าข้อมูลที่ Join มานั้นถูกต้อง ครบถ้วน และไม่เกิดข้อมูลซ้ำ ดังเช่นในกรณีนี้ที่เราทราบรายละเอียดของข้อมูล และสามารถตรวจสอบย้อนกลับไปได้ว่า ข้อมูลที่ Join มานี้ไม่ได้เกิด row ซ้ำกัน

และนอกจากนี้ เมื่อเราเลือกใช้ตารางข้อมูล และ Field ข้อมูล เท่าที่จำเป็นต้องใช้แล้ว การทำความเข้าใจในการวิเคราะห์ข้อมูลจะง่ายขึ้นด้วย เพราะเราจะเหลือเพียงส่วนสำคัญของข้อมูลที่จำเป็นจะต้องใช้จริงๆ เท่านั้น

## 3. การใช้ Data source filter (Using a data source filter)

จริงๆ แล้ว ตัวกรอง (Filters) ต่างๆ ในโปรแกรม Tableau นั้น มีหลายประเภทโดยมีลำดับการทำงานจากบนลงล่างดังรูปด้านล่างนี้ (ตาม Level of Detail)

![18.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1658455949351/HxnE0b1SJ.png align="center")

หนึ่งในตัวกรองข้อมูลของ Data source นั้น ก็จะมี "Context filter" ซึ่งช่วยเรื่องการกรองสกัดให้ข้อมูลมีขนาดที่เล็กลง และช่วยให้การ refresh ข้อมูลนั้น รวดเร็วขึ้น 

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

![1.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656904720660/F6Pf_OFVc.png align="center")

## 4. การสร้าง Extract file (Creating an extract : Use Extracts, but Limit Size)

ถ้าเรารู้ว่า เราใช้ข้อมูลเพียงบางส่วน ก็ใช้ตัวกรองข้อมูลผ่าน Data Source Filter เช่น Context filter เพื่อให้สกัดเฉพาะข้อมูลสิ่งที่เราต้องการ ข้อมูลที่ผ่านการกรองแล้วจะใช้ทรัพยากรน้อยลงในแง่ของหน่วยความจำ และเวลาในการ Refresh ข้อมูลจะลดลงแน่นอน 

ข้อด้อยของการทำ Extract file จะมีเพียงข้อมูลนั้น จะไม่ได้อยู่ในรูปแบบของ Real time 

> แต่หากงานที่เราทำนั้น ไม่จำเป็นที่จะต้องติดตามดูข้อมูลแบบทันทีทันใด (Real time) การเลือกใช้แบบ Extract file ก็เป็นหนึ่งตัวเลือกที่ดีในการเพิ่มประสิทธิภาพของโปรแกรม Tableau ให้สามารถทำงานได้รวดเร็วมากยิ่งขึ้น

![2.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1656906259431/CYiT3ZZ5z.png align="center")

## สรุป! (Conclusion)

การเพิ่มประสิทธิภาพของโปรแกรม Tableau อย่างง่ายอีกวิธีหนึ่งก็ คือ 

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

เพราะผลลัพธ์ที่ได้จากการทำตาม 4 Step นี้ จะช่วยให้โปรแกรม Tableau ประมวลผลข้อมูลได้รวดเร็วมากขึ้น หน่วยความจำที่ใช้ลดลง และผู้จัดทำข้อมูลใช้เวลาน้อยลงในการทำความเข้าใจข้อมูล (เนื่องจาก Field ข้อมูลนี้จะมีเฉพาะตัวที่ต้องใช้ในการวิเคราะห์ข้อมูลเท่านั้น) 

> มาถึงตรงนี้ ตั้งแต่ขั้นตอนการสำรวจข้อมูล (Data Exploration) ไปจนถึงขั้นตอนการจัดเตรียมข้อมูล (Data Preparation) นั้น ล้วนมีความสำคัญอย่างมาในการวิเคราะห์ข้อมูล 

และโดยหลักๆ แล้วใน 2 ขั้นตอนนี้ล้วนใช้เวลาไปมากกว่า 80 % ในการจัดการข้อมูล

หวังว่าเครื่องมืออย่าง Describe และ Bring in Only Needed Data จะช่วยให้ทุกท่านสามารถสำรวจและทำความเข้าใจข้อมูลได้สะดวก ถูกต้อง ครบถ้วน และตรวจสอบได้ ตามโจทย์การทำงานของทุกคนนะคะ ขอบคุณที่อ่านมาถึงตรงนี้ แล้วพบกันใหม่ในบทความหน้า ขอบคุณค่า :)

![6.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1658206957587/46GjN_km8.png align="center")

**อ้างอิง (Reference)**

- Tableau. (2022). Filters and Level of Detail Expressions. สืบค้นจาก https://help.tableau.com/current/pro/desktop/en-us/calculations_calculatedfields_lod_filters.htm

- Tobiah McConnell. (2015). The Tableau Performance Checklist: Data – Bring in Only Needed Data. สืบค้นจาก https://interworks.com/blog/tmcconnell/2015/03/20/tableau-performance-checklist-data-bring-only-needed-data/


