บทความ

สอนแบ่งปันความรู้ เทคโนโลยีเพื่อ “ขับเคลื่อนประเทศไทย”
Advanced options
Best Practice Microsoft SQL Server 2019

ตั้งค่าตาม Best Practice ทันทีตั้งแต่ตอนติดตั้ง Microsoft SQL Server 2019

ผู้เขียนติดตาม Microsoft SQL Server 2019 จาก Community Technology Previews (CTPs) จนตอนนี้ออก Release Candidate (RC) แรกออกมาแล้ว สิ่งหนึ่งที่ผู้เขียนพอใจมากคือมีการตั้งค่าระดับ Instance ตาม Best Practice ที่ควรจะเป็นให้ตั้งแต่ตอนติดตั้งเลย ดังนี้
การดูต้นทุนโครงการด้วย Microsoft Project

การดูต้นทุนโครงการด้วย Microsoft Project

โครงการขนาดใหญ่ มักมีความซับซ้อนอยู่ภายใน ไม่ว่าจะเป็นงานย่อย(tasks)จำนวนมาก ทรัพยากร (resources) ที่เกี่ยวข้องหลากหลาย ซึ่งบาง task อาจมีการดำเนินงานทับซ้อนกัน และเรียกใช้งาน resources มี model การคิดค่าใช้จ่ายที่ซับซ้อน เช่น ค่าล่วงเวลาและราคาที่เปลี่ยนไปตามช่วงเวลา
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 14

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 14

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

เก่งโค้ดงาน Business Intelligence ตอนที่ 7

ในภาษาเอ็มเราสามารถเขียนคิวรีที่อ้างถึงคิวรีอื่นเป็นซอร์สได้ ยกตัวอย่างเช่น สมมติว่าเรามีเวิร์กชีตในโปรเกรมเอ็กซ์เซลซึ่งมีตารางอยู่สองอัน ตารางชื่อ Sales และ ตารางชื่อ Product
การแสดงวันเวลาปัจจุบันแบบอัตโนมัติทุก 1 วินาทีบนฟอร์ม

การแสดงวันเวลาปัจจุบันแบบอัตโนมัติทุก 1 วินาทีบนฟอร์ม

ถ้าเราต้องการให้ วันเวลาปัจจุบันแสดงบน Form โดยที่ไม่ต้องเขียน code เราสามารถทำได้ใช้ Calulate Control โดยกำหนด Property ที่ Control Source ของ Textbox Control Source
หน้าปกบทความ Backward Compatibility (การเข้ากันได้ย้อนหลัง) ของ API

Backward Compatibility (การเข้ากันได้ย้อนหลัง) ของ API

บทความตอนนี้พูดถึง Backward Compatibility ของ API ซึ่งคนโค้ดควรรู้และระมัดระวังเมื่อใช้งาน Framework ที่ออก version ใหม่กับ source code เก่าหรือ binary ที่ Compile ไว้กับ version เก่า หรือเมื่อเขียน library ใช้งานเอง เช่น ปัญหา Reference Types ที่ไม่เกี่ยวข้อง parameter แบบ Reference Types กับแบบที่ค่าเป็น null ไม่ได้ parameter ทางเลือก (Optional parameters) และ ปัญหาเรื่องความเข้ากันได้ย้อนหลังในระดับ source code และ binary เมื่อมีการทำ method overload กับ Type ที่เป็น Generic
การสืบค้นตามช่วงเวลา

การสืบค้นตามช่วงเวลา

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

การหาวันเริ่มต้นและวันสุดท้ายของเดือนปัจจุบัน

บทความนี้ผู้เขียนขอเรียกเป็น “ซีรีย์คิวรี่ตามคำขอ” เพราะผู้เขียนได้รับการสอบถามถึงการสืบค้นวันสุดท้ายของเดือนปัจจุบัน ทั้งที่ Microsoft SQL Server นั้นมีฟังก์ชั่น EOMONTH (End of Month) มาตั้งแต่เวอร์ชั่น 2012
พัฒนาการณ์ของ Query Store

พัฒนาการของ Query Store

ตั้งแต่ได้เขียนบทความ “รู้จัก Query Store บน SQL Server 2016” เอาไว้ก่อนหน้านี้ แล้วได้เว้นช่วงไปพอสมควร ปัจจุบัน Microsoft SQL Server ใกล้จะออกเวอร์ชั่น 2019 ในเร็ววันนี้ มาดูกันว่า Query Store เปลี่ยนไปจากเดิมมากแค่ไหนกัน
เก่งโค้ดงาน Business Intelligence ตอนที่ 6

เก่งโค้ดงาน Business Intelligence ตอนที่ 6

บทความตอนที่ผ่านมาเราดูพารามิเตอร์สามตัวแรกของฟังก์ชัน Table.Group() ไปแล้ว ในหัวข้อนี้มาดูหน้าที่ของพารามิเตอร์ตัวที่สี่กันบ้าง พารามิเตอร์ตัวที่สี่ของฟังก์ชัน Table.Group() ใช้ทำหน้าที่กำหนดวิธีเรียกข้อมูล ถ้าเราไม่กำหนดอะไรจะมีค่าโดยปริยายเป็น GroupKind.Global ซึ่งมีความหมายว่า เมื่อเราจัดกลุ่มคอลัมน์ ลำดับการเรียงข้อมูลจะไม่มีผล ทุกแถวที่สัมพันธ์กับค่าในคอลัมน์จะถูกรวมเข้าด้วยกัน
Merge Query ด้วย Power Query

Merge Query ด้วย Power Query

ข้อมูลที่เราจะต้องทำการสรุปผล บางครั้งอาจจะมีข้อมูลมากกว่า 1 ตารางโดยมีความสัมพันธ์กัน คำสั่งหนึ่งที่จะใช้หาค่าใน Excel เราจะใช้ฟังก์ชั่น VLookup ซึ่งหากทำงานกับข้อมูลจำนวนมาก ก็จะรู้สึกว่า Excel มีความอืด หนืดมาก ซึ่งแนวทางในตัวอย่างนี้จะใช้ Merge Query ใน Power Query เพื่อทำการแก้ไขปัญหา โดยทำการ ETL ให้ข้อมูล Lookup เสร็จเรียบร้อย ทำให้ข้อมูลที่ได้ไม่มีสูตร การทำงานจะรวดเร็วและ ไฟล์จะเล็กลงอีกด้วย
ประโยชน์ของ Power Query เพื่อช่วยในทางธุรกิจ

ประโยชน์ของ Power Query เพื่อช่วยในทางธุรกิจ

Power Query เป็นเครื่องมือสำหรับงานด้าน Business Intelligence ช่วยทำเรื่อง Data Cleansing, Data Shaping, Data Corrector คือจะช่วยในการทำความสะอาดข้อมูล ปรับปรุงข้อมูลที่มาจากหลากหลายแหล่ง หลากหลายรูปแบบให้มีความพร้อมในการวิเคราะห์ข้อมูลด้วยเครื่องมือต่าง ๆ ในอนาคต โดย Microsoft Power Query สามารถเรียกใช้ได้ทั้งใน Power BI และใน Microsoft Excel ซึ่ง Microsoft Excel 2016, Excel 2019, Office 365 เป็นต้นมาจะมี Power Query ติดตั้งมาด้วย
การแปลงวันที่ ที่เป็นปี พ.ศ. ให้ เป็นปี ค.ศ. อัตโนมัติด้วย Power Query ใช้ได้ทั้ง Excel และ Power BI Desktop

การแปลงวันที่ ที่เป็นปี พ.ศ. ให้ เป็นปี ค.ศ. อัตโนมัติด้วย Power Query ใช้ได้ทั้ง Excel และ Power BI Desktop

ปัญหาหนึ่งของการทำงานกับข้อมูลประเภท วันที่ ก็คือ รูปแบบของวันที่ มีหลายรูปแบบ เช่น วันเดือนปี เดือนวันปี หรือ เป็นปี พุทธศักราช หรือเป็นชื่อเต็มของเดือน ชื่อย่อของเดือน การจะนำเอาข้อมูลดังกล่าวมาทำงาน หรือ ใช้ในการวิเคราะห์ข้อมูลได้ มีความจำเป็นที่จะต้องทำการแปลงให้เป็นวันที่ ให้ได้
ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 12

ข้อดีของภาษา C# เมื่อเทียบกับภาษาอื่น ๆ ตอนที่ 12

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

การเลือกประเภทกราฟให้เหมาะกับงาน

หลายคนที่จะต้องนำเสนอข้อมูล เพื่อใช้ในการทำรายงาน ประชุม การนำเสนอด้วยกราฟเป็นทางเลือกหนึ่งที่น่าสนใจ แต่เราจะเลือกกราฟอะไรดี จะลองสรุปให้ดูกันนะครับ ซึ่งสามารถนำไปใช้เลือกการนำเสนอให้เหมาะสมกับข้อมูล โดยนำไปใช้ในโปรแกรมอย่าง Excel หรือ Power BI หรือ Data Analytics ต่าง ๆ ได้
เก่งโค้ดงาน Business Intelligence ตอนที่ 5

เก่งโค้ดงาน Business Intelligence ตอนที่ 5

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

เก่งโค้ดงาน Business Intelligence ตอนที่ 4

ถ้าเปรียบเรคคอร์ดเป็นตารางในฐานข้อมูล ฟิลด์ก็คือคอลัมน์ต่าง ๆ การดึงข้อมูลจากตารางในภาษา SQL เราใช้คำสั่ง select ภาษาเอ็มก็มีตาราง (table) ที่จะพูดถึงในหัวข้อต่อไป ส่วนในหัวข้อนี้เป็นการดึงข้อมูลจากเรคคอร์เฉพาะบางฟิลด์ที่กำหนด เราใช้วิธีเขียนคำสั่งซึ่งมีซินแท็กซ์ดังนี้
คุณสมบัติ ref return ,ref local กับ Local Function

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : คุณสมบัติ ref return ,ref local กับ Local Function

คุณสมบัติ ref return เริ่มตั้งแต่C# 7.0 จากนั้นพอมาถึงC# 7.3 ก็เพิ่มคุณสมบัติ ref local เพื่อให้ใช้งานคู่กัน ทำให้เขียนโค้ดฝั่งmethodและฝั่งตัวรับได้สะดวกยิ่งขึ้นไปอีก ปรกตินักเขียนโค้ดอย่างเราจะใช้ตัวกระทำ ref (ความจริงเป็นmodifierแต่เพื่อให้กระชับต่อไปนี้จะเรียกว่าเป็น “คำสั่ง” ) เมื่อต้องการส่ง “ค่าอ้างอิง” ไปเป็นพารามิเตอร์ (คือการส่งค่าไปยังmethodโดยส่งค่าอ้างอิงไป ไม่ได้ส่งค่าของตัวแปรไป) หรือที่เรียกว่า “การผ่านตัวอ้างอิง” (pass by reference) นี่เป็นคุณสมบัติที่มีในC#ตั้งแต่versionแรก แต่มาตอนนี้เราสามารถใช้คำสั่ง ref ในลักษณะอื่น ๆ ได้ด้วย ในตอนที่ผ่านมาผู้เขียนได้พูดถึงการการใช้ ref return ไปแล้วบางส่วน ในบทความตอนนี้จะอธิบายรายละเอียดของ ref return ที่เหลือ และจะต่อด้วยเรื่องคุณสมบัติ ref local ด้วย
Checkpoint หัวใจงานนำเสนอ

Checkpoint หัวใจงานนำเสนอ

เทคนิคในการสร้างงานนำเสนอ ที่ตอนทำจริงมักจะลืม ก็เลยเป็นบทความสรุปจุดเช็ค (Checkpoint) ว่าการทำงานนำเสนอความคำนึงเรื่องอะไรบ้าง
C#7 ตัวกระทำ is กับ คุณสมบัติใหม่ในคำสั่ง switch และ Ref local

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : ตัวกระทำ is กับ คุณสมบัติใหม่ในคำสั่ง switch และ Ref local

เริ่มในภาษาC# เวอร์ชั่น 7.0 ขึ้นไปตัวกระทำ is มีความสามารถเพิ่มจากเดิมเพื่อใช้ในงานตรวจสอบรูปแบบที่ซับซ้อนได้ดีขึ้นกว่าเดิม ตัวกระทำ is ใช้หาชนิดของtypeเพื่อตรวจสอบความเข้ากันได้ขณะrunโปรแกรม มันทำหน้าที่ตรวจว่า objectหรือผลลัพธ์จากนิพจน์สามารถแปลงไปเป็นชนิดข้อมูลที่กำหนดได้หรือไม่ มีsyntaxอย่างที่เห็นในรูปที่ 1 บรรทัด 3
เก่งโค้ดงาน Business Intelligence ตอนที่ 3

เก่งโค้ดงาน Business Intelligence ตอนที่ 3

ในภาษาเอ็มเราสามารถอ้างอิงถึงตัวแปรหรือสิ่งต่าง ๆ ที่อยู่ภายในสภาพแวดล้อมได้โดยใช้ “ตัวระบุ” หลักการนี้มีชื่อว่า “การอ้างด้วยตัวระบุ” (Identifier References IR) ซึ่งมีสองแบบคือ “การอ้างด้วยตัวระบุจำเพาะ” (Exclusive-identifier-reference EIR) ที่เป็นวิธีปรกติ กับ “การอ้างด้วยตัวระบุไม่จำเพาะ” (Inclusive-identifier-reference IIR) ซึ่งเป็นวิธีพิเศษ
Map ใน Power BI

แผนที่ (Map) ใน Power BI

จากที่ได้ทำโปรเจคเกี่ยวกับ Power BI มาพักหนึ่งอยากจะมาแชร์ให้ฟังเกี่ยวกับการทำงานกับ Map ใน Microsoft Power BI Desktop ว่าใช้แผนที่ตัวใดเหมาะสม
ภาษาโปรแกรม Python คืออะไร ?

ภาษาโปรแกรม Python คืออะไร ?

โลกในยุคดิจิทัล (Digital age) ได้มีความก้าวหน้าในการพัฒนาเทคโนโลยีอย่างรวดเร็วแบบก้าวกระโดด ทำให้มีบทบาทสำคัญในการพัฒนาขับเคลื่อนธุรกิจ และอำนวยความสะดวกในชีวิตประจำวัน เช่น การทำธุรกรรมทางการเงินกับธนาคารแบบออนไลน์ การใช้ระบบสั่งการคอมพิวเตอร์ด้วยเสียง การตรวจสุขภาพเบื้องต้นด้วยแอปพลิเคชันบนมือถือ และระบบ Google Search ที่สามารถรู้ว่าคุณกำลังค้นหาข้อมูลอะไรก่อนที่เราจะพิมพ์จบประโยค เป็นต้น นอกจากนั้นยังมีนวัตกรรมเทคโนโลยีที่มีความล้ำหน้าต่าง ๆ
เก่งโค้ดงาน Business Intelligence ตอนที่ 2

เก่งโค้ดงาน Business Intelligence ตอนที่ 2

ฟังก์ชันในภาษา M เป็นการจับคู่ระหว่างค่าอินพุตกับค่าเอาต์พุต เราสามารถเขียนนิยามฟังก์ชันได้โดยเริ่มจากการกำหนดชุดของอินพุต (ส่วนที่เป็นพารามิเตอร์ของฟังก์ชัน) แล้วตามด้วยนิพจน์ซึ่งทำหน้าที่คำนวณสิ่งที่จะเป็นผลลัพธ์ของฟังก์ชัน (ส่วนที่เป็นไส้ของฟังก์ชัน) โดยใส่เครื่องหมาย “ส่งไปยัง” ( => ) ไว้ระหว่างอินพุตกับนิพจน์
การ Deconstruct Tuple และ Type อื่น ๆ

มีอะไรใหม่ใน .NET Core 2 และ C# 7 : การ Deconstruct Tuple และ Type อื่น ๆ

ภาษาC# 7.0 ขึ้นไปสนับสนุนการประกาศตัวแปรแบบ discard ซึ่งเป็นตัวแปรแบบเขียนได้เท่านั้น (read-only) โดยที่ท่านจะประกาศตัวแปรแบบนี้กี่ตัวก็ได้ แต่ทุกตัวจะมีชื่อเดียวกันหมดคือ _ (เครื่องหมายขีดเส้นใต้หรือ underscore) ประโยชน์ของตัวแปรแบบ discard คือการนำไปใช้กับTuple (Tuple อ่านรายละเอียดเรื่องTupleได้จากบทความตอนก่อนหน้านี้) เพราะการรับค่าส่งกลับจากmethodที่ส่งค่ากลับเป็นTuple หรือการเรียกใช้methodที่มีพารามิเตอร์แบบ out เราจะต้องประกาศตัวแปรไว้รับค่า ซึ่งบ่อยครั้งที่เราไม่ต้องการใช้ค่าจากตัวแปรเหล่านั้น แต่ก็จำต้องประกาศ ทำให้โค้ดรกรุงรังโดยเปล่าประโยชน์
แนะนำการเขียนโปรแกรมด้วยภาษา Python

แนะนำการเขียนโปรแกรมด้วยภาษา Python

ภาษา Python เป็นหนึ่งในตัวเลือกยอดนิยมอันดับต้นๆ ของภาษาโปรแกรมปัจจุบัน ด้วยจุดเด่นหลักที่ Python เป็นภาษาที่เรียนรู้และเข้าใจง่าย ทำให้ไม่ว่าจะเป็นเด็กประถมไปจนถึงผู้ใหญ่วัยทำงานก็สามารถที่จะใช้เวลาเรียนรู้และสร้างโปรแกรมอย่างง่ายได้อย่างรวดเร็ว รวมไปถึงการนำไปใช้ในการต่อยอดงานด้านต่างๆ ที่มีความซับซ้อนมากขึ้นได้ บทความนี้จะช่วยให้ข้อมูลเพื่อใช้ในการประกอบการตัดสินใจว่าภาษา Python คุ้มค่ากับการลงทุนศึกษาหรือไม่ครับ
Big Data Ecosystem คืออะไร

Big Data Ecosystem คืออะไร

Big Data Ecosystem จะเป็นภาพใหญ่ของการทำงานกับ Big Data เริ่มตั้งแต่การเก็บข้อมูล ประมวลผล วิเคราะห์ และ แสดงผลข้อมูล โดยที่เริ่มด้วยโครงสร้างพื้นฐาน (Infrastructure) และการเลือกเครื่องมือที่เหมาะสมในการจัดเก็บ ประมวลผลและวิเคราะห์ (Process/Analytics) ซึ่ง Report/Application ดังกล่าวจะเป็นส่วนสำคัญ ที่จะเป็นส่วนของ Big Data ecosystema
DAX Function แนะนำฟังก์ชัน Related

DAX Function แนะนำฟังก์ชัน Related

บทความแนะนำฟังก์ชัน Related ด้วย DAX หรือ Data Analysis Expression เพื่อดึงข้อมูลข้ามตาราง
Dimensional Model ของ Ralph Kimball

รู้จักกับโครงสร้างข้อมูล แบบ Dimensional Model

Microsoft ได้ออกแบบผลิตภัณฑ์ Microsoft SQL Server Integration Service ให้สามารถสกัดข้อมูลจากหลายแหล่งหลายโครงสร้าง (schema) แล้วมีเครื่องไม้เครื่องมือในการแปลงข้อมูลเหล่านั้นไปสู่โครงสร้าง (schema) แบบ Dimensional Model ของ Ralph Kimball ผู้อ่านสามารถติดตามหนังสือในเครือ Kimball Group ได้จาก http://www.kimballgroup.com
Microsoft SQL Server กับการจัดการ Data Warehouse และ Data Model

การสร้าง Data Model ด้วย Microsoft SQL Server Analysis Service และการเรียกใช้

Microsoft SQL Server Analysis Service เป็นผลิตภัณฑ์สำหรับจัดการ Data Model ระดับ Enterprise ซึ่งแบ่งได้เป็น 2 ประเภทดังนี้ - Multidimensional Data Model ซึ่งเป็น โครงสร้างข้อมูลแบบ OLAP (cubes, dimensions, measures) - Tabular Data Model ซึ่งเป็น โครงสร้างข้อมูลแบบ Relational (model, tables, columns)