function query

4 ขั้นตอนในการสร้าง Function Query แบบที่มี UI ให้แก้เล่นได้ใน Power Query

ในบทความนี้ผมจะมาแนะนำวิธีสร้าง Function Query ขึ้นใน Power Query ซึ่งไม่ใช่แบบปกติ แต่จะเป็นแบบที่ยังยอมให้เราแก้ไข Step ต่างๆ ใน Function นั้นได้โดยง่าย แต่ถ้าใครยังไม่รู้ว่าผมพูดถึงเรื่องอะไร ลองอ่าน recap นี้ดูก่อนเล็กน้อย… Recap Power Query เป็นเครื่องมือสำหรับการดัดแปลงข้อมูลที่ทรงพลังและใช้ง่ายมากๆ อยากจะทำอะไรก็มีเมนูสำเร็จรูปเอาไว้ให้กดได้เลยโดยแทบไม่ต้องเขียนสูตร แต่ว่าหลายครั้งก็น่าเบื่อเวลาที่เราต้องทำ Step อะไรซ้ำๆ เหมือนเดิมกับหลายๆ Query จะดีกว่ามั้ยถ้าเราทำ Step พวกนั้นเป็นฟังก์ชันแล้วเรียกใช้ได้อย่างง่ายๆ เลย? ในหนังสือ Excel Power Up! ที่ผมเขียนไว้ ในบทหลังๆ ก็มีเขียนวิธีที่ทำให้ Query กลายเป็นฟังก์ชันได้ง่ายๆ โดยเปิด Advanced Editor แล้วใส่คำว่า (input1, input2)=> นำหน้า code เดิม ซึ่งมันจะเปลี่ยน Query นั้นให้กลายเป็นฟังก์ชันที่มี input 2 ตัวคือ […]

Power BI ตอนที่ 13: CALCULATE ฟังก์ชันที่ทรงพลังที่สุดใน DAX 1

Power BI ตอนที่ 13: CALCULATE ฟังก์ชันที่ทรงพลังที่สุดใน DAX

ในบทความนี้ผมจะมาพูดถึงฟังก์ชัน CALCULATE ฟังก์ชันที่ทรงพลังที่สุดใน DAX ที่ถูกออกแบบมาให้ทำหน้าที่ “เปลี่ยน Filter Context” โดยเฉพาะ CALCULATE เป็นฟังก์ชันที่หน้าตาดูเรียบง่าย เหมือนไม่มีอะไร แต่ทรงพลังมากๆ ผมว่ามันเทียบได้กับตัวการ์ตูนเอกในเรื่อง One Punch Man ที่ชื่อไซตามะเลยครับ หน้าตาดูไม่เก่งอะไรเลย แต่ต่อยทีเดียวศัตรูตายหมด ดังนั้นอย่าดูถูก CALCULATE เด็ดขาด!! ผมกล้าพูดได้เลยว่าใครที่ใช้ Power BI แต่ไม่รู้จัก CALCULATE ก็เหมือนกับยังใช้ Power BI ไม่เป็นอ่ะครับ ดังนั้นมันสำคัญจริงๆ บอกเลยว่าตั้งแต่บทนี้ไปเนื้อหาจะเริ่มลึกซึ้งมากขึ้นๆ ดังนั้นความรู้เดิมควรจะแน่นก่อน และควรมีสมาธิในการอ่านดีๆ นะครับ อ่านผ่านๆ ไม่คิดตาม ไม่เข้าใจแน่นอน เอาล่ะเราไปเริ่มกันเลย! Recap เล็กน้อย ความหมายของการเปลี่ยน Filter Context ก็จะคล้ายๆ กับในบทความตอนก่อนหน้านี้ที่ ผมได้พยายามเขียนสูตร ALL เพื่อปลด Filter Context เดิมออกแล้ว Filter […]

distinct values all

Power BI ตอนที่ 12: DISTINCT, VALUES, ALL และผองเพื่อน

เรื่องของ Table Function ใน DAX นอกจาก FILTER ที่แนะนำไปในบทความที่แล้ว ยังมีที่เราควรจะรู้จักอีก 3 ตัว ก็คือ DISTINCT, VALUES, ALL (และเพื่อนๆ ของมัน) เนื่องจากทั้ง 3 ตัวนี้ทำงานคล้ายกันๆ แต่ไม่เหมือนกัน… ดูเผินๆ แล้วจะสับสนได้ ผมจึงขอทำตารางเปรียบเทียบดังนี้ ฟังก์ชัน รองรับ Table/Col ที่เป็นสูตร (Expression) กรณีใช้กับ Table กรณีใช้กับคอลัมน์เดียว กรณีใช้กับหลายคอลัมน์ DISTINCT ได้ •ได้ Table แบบค่าที่ไม่ซ้ำกัน •ได้ค่าไม่ซ้ำกันในคอลัมน์นั้น ทำไม่ได้ VALUES ไม่ได้ •ค่า Duplicates ยังอยู่ •ได้ Blank Row พิเศษ •ได้ค่าไม่ซ้ำกันในคอลัมน์นั้น •ได้ Blank Rowพิเศษ ทำไม่ได้ ALL […]

Power BI ตอนที่ 11: เรียนรู้ DAX Table Function - FILTER 2

Power BI ตอนที่ 11: เรียนรู้ DAX Table Function – FILTER

ในซีรีส์ Power BI บทก่อนหน้านี้เราได้เรียนรู้จักสูตร DAX พื้นฐานกันไปแล้ว คราวนี้เรามารู้จักฟังก์ชันกลุ่ม Table Function เพิ่มเติม นั่นก็คือ FILTER, DISTINCT, VALUES, ALL ซึ่งจะช่วยให้เราสามารถเขียนสูตร DAX ที่ซับซ้อนได้มากขึ้นในอนาคตนั่นเอง แต่เพื่อไม่ให้มันเยอะเกินไป เดี๋ยวบทความนี้ผมจะพูดถึง FILTER แค่ตัวเดียวก่อน ส่วน ALL, DISTINCT, VALUES และผองเพื่อน จะพูดในตอนถัดไปนะครับ ไฟล์ประกอบ ใช้ไฟล์เดิมmี่ทำมาจากตอนก่อนหน้าได้เลยนะครับ หรือจะใช้อันนี้ก็ได้ Table Function คืออะไร? คำว่า Table Function ก็คือ ฟังก์ชันที่ให้ผลลัพธ์กลับมาเป็น Table หรือตารางนั่นเอง ต้องบอกว่าฟังก์ชันปกติที่เราคุ้นเคยกันก่อนหน้านี้ทุกอัน จะให้คำตอบออกมาเป็นค่าเดียว (เรียกว่า Scalar Value) ไม่ว่าจะเป็นประเภทตัวเลข ตัวหนังสือ logic ก็ตาม ก็จะมีค่าเดียวมาโดยตลอด แต่เจ้า Table Function ไม่ใช่แบบนั้น […]

เปลี่ยนสูตรยากให้เป็นสูตรกล้วยๆ ด้วย Dynamic Array ใน Excel 365 3

เปลี่ยนสูตรยากให้เป็นสูตรกล้วยๆ ด้วย Dynamic Array ใน Excel 365

ผมเชื่อว่าหลายคนที่ใช้ Excel นั้นย่อมเคยต้องการให้ Excel ทำงานจัดการข้อมูลในลักษณะนี้ เช่น คัดกรองข้อมูลให้เหลือสิ่งที่ต้องการเท่านั้น (Filter) จัดเรียงข้องมูลใหม่ตามต้องการ (Sort) ตัดข้อมูลซ้ำออกให้เหลือเฉพาะที่ไม่ซ้ำ (Remove Duplicates) ตั้งแต่อดีตที่ผ่านมา จริงๆ Excel ก็มีเครื่องมือที่พร้อมที่จะทำงานเรื่องเหล่านี้อยู่แล้ว ใน Ribbon เครื่องมือ Data เช่น Filter, Sort, Remove Duplicates และผมก็เชื่อว่ามันเป็นเครื่องมือที่หลายๆ คนน่าจะพอใช้กันเป็นอยู่แล้วล่ะ อย่างไรก็ตามเครื่องมือเหล่านั้นแม้จะใช้ง่าย แต่ก็มีจุดอ่อนสำคัญคือ มันเป็นเครื่องมือที่ต้องให้เรากดปุ่มสั่งใหม่ทุกครั้ง เช่น จะ Filter แบบไหน Sort ยังไง รวมถึง Remove Duplicates ข้อมูลชุดไหน แปลว่ามันยังต้องมี Step ที่ต้องการมนุษย์มา “ทำงาน Manual” บางอย่างอยู่ ใน Excel ยุคใหม่ขึ้นมาหน่อย ก็ได้มีเครื่องมือ Power Query เข้ามาช่วยแก้ปัญหานี้ เพราะมันก็ […]

เลิกใช้ Merge Cell กันเถอะ (แล้วจะให้ทำยังไงแทน?) 4

เลิกใช้ Merge Cell กันเถอะ (แล้วจะให้ทำยังไงแทน?)

“มาเลิกใช้ Merge Cell กันเถอะ!” นี่คือความในใจที่อยากจะตะโกนบอกคนใช้ Excel ทุกคนเลย 555 แต่ผมไม่ได้มาห้ามเฉยๆ นะ เพราะในบทความผมมีวิธีหลีกเลี่ยงที่พอจะช่วยลดปัญหาของ Merge Cell มาบอกด้วยล่ะ หากผมจะบอกว่า “การ Merge Cell คือต้นกำเนิดของความเลวร้ายทั้งปวงใน Excel” มันอาจจะดูแรงเกินไปนิด แต่มันก็ใกล้เคียงล่ะ มาดูกันว่าทำไม… ปัญหาของการ Merge Cell หากเรามีการใช้ Merge Cell ที่ตัวข้อมูลดิบที่เป็น Input จะพบว่ามันก่อให้เกิดปัญหามากมาย Merge แบบหัวตาราง 2 ชั้น (กรอบชมพูในรูปบน) ทำให้เลือก Sort/Filter หัวตารางลำบาก ต้องเลือกทั้งแถวที่สองแล้วกด Filter เอาถึงจะเลือกหัวตารางชั้นล่างได้ ซึ่งยุ่งยากมาก เอาข้อมูลเข้าไปวิเคราะห์ใน Pivot Table ก็ไม่ได้อีก (เพราะถือว่ามีชื่อ Field ว่าง) การ Merge ที่ Data […]

ฐานข้อมูลตำบล อำเภอ จังหวัด ของประเทศไทย V2: เพิ่มรหัสไปรษณีย์ 10

ฐานข้อมูลตำบล อำเภอ จังหวัด ของประเทศไทย V2: เพิ่มรหัสไปรษณีย์

สืบเนื่องจากที่ผมได้พยายามทำ “ฐานข้อมูลส่วนกลาง” หรือที่ผมจะเรียกว่า “Common Database” ที่หลายๆ คนก็น่าจะอยากใช้เหมือนกัน เช่น ฐานข้อมูลตำบล อำเภอ จังหวัด ภาค ทั้งภาษาไทยและภาษาอังกฤษ เพื่อที่เพื่อนๆ จะได้ไม่ต้องมาเสียเวลาทำเหมือนผมอีก ตอนนี้ผมทำเสร็จแล้วในระดับนึง คือ ได้ ภาค จังหวัด อำเภอ ตำบล แบบที่เรียกได้ว่าครบถ้วนที่สุดอันนึงในโลก internet แล้วล่ะ 555 (ถ้าไม่นับ Wikipedia นะ ) ก็เลยจะเอามาแจกเพื่อนๆ ให้ลองเอาไปใช้ดูก่อน ( ตอนนี้เพิ่งเพิ่มรหัสไปรษณีย์ไปให้แล้วนะ เมื่อ 17 Mar 2020) ที่บอกว่าครบถ้วน เพราะผมมีการ crosscheck หลาย source มากๆ ถ้าอันไหนไม่ตรงกันจะเปิด wiki ดูทีละเขต ทีละอำเภอเลย (รายละเอียดของ source อยู่ในไฟล์นะ) ที่ต้อง cross check เพราะไม่มีแหล่งใดถูกต้องสมบูรณ์เลย […]

สูตรสำเร็จรูปสำหรับสร้าง Date Table ด้วย DAX และ Power Query M Code 11

สูตรสำเร็จรูปสำหรับสร้าง Date Table ด้วย DAX และ Power Query M Code

จากที่ผมได้เคยอธิบายไปว่า Date Table มีความสำคัญต่อการทำ Data Model เป็นอย่างยิ่ง โดยเฉพาะการใช้ฟังก์ชัน Date Intelligence ยิ่งจำเป็นต้องใช้ Date Table เลยล่ะ แปลว่า Data Model ของทุกคนควรมี Date Table ซึ่งกลายเป็นเรื่องที่ทุกๆ คนต้องทำเหมือนๆ กันหมด ดังนั้นจะดีกว่ามั้ย ถ้าเราสามารถมีสูตรสำเร็จรูปอะไรซักอย่าง ที่สามารถ Copy Paste ไปใช้สร้าง Date Table ได้เลย? และนั่นคือที่มาของบทความนี้ครับ ทีนี้การสร้าง Date Table นั้นทำได้ 2 วิธี คือใช้ DAX กับใช้ M Code ของ Power Query เรามาดูแต่ละวิธีกันครับ สร้าง Date Table ด้วย DAX แค่กด New […]

วิธีรวมไฟล์ใน Folder แบบไม่มีปัญหาเรื่องชื่อคอลัมน์ใน Power Query 12

วิธีรวมไฟล์ใน Folder แบบไม่มีปัญหาเรื่องชื่อคอลัมน์ใน Power Query

ปกติเวลาเราสั่งให้ Power Query รวมทุกไฟล์ใน Folder เดียวกัน แม้มันจะเอาข้อมูลรวมกันได้ แต่ก็อาจจะมีปัญหาเรื่องชื่อคอลัมน์ได้ในอนาคต สาเหตุเพราะ มันมีการระบุชื่อคอลัมน์ที่แตกออกมาอย่างชัดเจนในสูตร M Code ทำให้ หากในอนาคตมีคอลัมน์เพิ่มขึ้นหรือลดลง ก็จะมีปัญหาทันที (อย่างเช่นที่ผมบอกไว้ในหนังสือ Excel Power Up ว่า เมื่อไหร่ก็ตามที่มีการระบุชื่อคอลัมน์ในสูตร M Code นั้น จะอันตรายต่อการ Refresh ทันที) ลองทำดู โหลดไฟล์ประกอบได้ที่นี่ ตัวอย่างเช่น ผมสั่งรวมข้อมูลจาก Folder ที่ชื่อ MyFolder และสร้าง Custom Column ดังนี้ เพื่อดึงข้อมูลจาก Excel ด้วยสูตรว่า =Excel.Workbook([Content],true) ผมแตกคอลัมน์ Custom ออกมาจะได้ดังนี้ เดี๋ยวผมลบคอลัมน์ที่ไม่ใช้ทิ้งก่อน โดยจะเก็บแค่ ชื่อไฟล์ ชื่อ Item และ Data ไว้ โดยเลือกที่จะเอา แล้วสั่ง […]

การใช้ Power Query จัดการข้อมูลที่มีหัวตาราง 2 ชั้น 13

การใช้ Power Query จัดการข้อมูลที่มีหัวตาราง 2 ชั้น

ปัญหาข้อมูลเน่าแบบ classic อันนึงเลยก็คือ ได้ข้อมูลเชิง Report มา และดันใส่หัวตาราง 2 ชั้นมาด้วย ทำให้ใช้ Unpivot ตรงๆ ไม่ได้ คราวนี้จะทำยังไงดี มาดูกันครับ Download ข้อมูลที่มีหัวตาราง 2 ชั้นได้ที่เว็บสำนักงานสถิติแห่งชาติ จำนวนนักเรียน นิสิต นักศึกษาในระบบโรงเรียน ในสถานศึกษาของรัฐบาลและเอกชน จำแนกตามระดับการศึกษา และชั้น ปีการศึกษา 2556 – 2560 หรือ http://statbbi.nso.go.th/staticreport/Page/sector/TH/report/sector_03_3_TH_.xlsx หลักๆ การจัดการข้อมูลใน Power Query จะมีแนวทางดังนี้ ข้อมูลอยู่ในรูปแบบ Report ยังไม่ใช่ข้อมูลเชิง Database ติดข้อมูลอื่นที่ไม่เกี่ยวมา เช่น header/footer -> filter, remove col, remove top/bottom rows ข้อมูลเว้นว่างแบบละไว้ในฐานที่เข้าใจ -> fill down ข้อมูล […]