Category: ไม่มีหมวดหมู่

  • Tango เครื่องมือช่วยสร้างคู่มือ

    เป็นเครื่องที่ช่วยสร้างเอกสาร how to ได้อย่างสะดวกและรวดเร็ว การทำงานจะมีขั้นตอนยังไง มาดูกัน

    1. ให้เรา login Gmail ก่อนแล้วเข้าสู่ web : tango.us ตัว tango นั้นเป็น Extension ของ Google chrome ที่ช่วยให้เราสร้างเอกสาร แบบ step by step และ screen shot สร้างเอกสารให้เราเลย
    2. คลิก Add to Chrome – It’s Free

    Add to Chrome

    1. กดปุ่ม เพิ่มส่วนขยาย
    2. Sign up with google จากนั้นเลือก Account ที่ต้องการ
    3. คลิกที่ส่วนขยายด้านขวาบน ปักหมุดตัว tango ไว้ที่ด้านบนของหน้าจอ
    4. ทดลองใช้งาน

    ตัวอย่างทดลองกับการค้นหา google

    • กดที่ icon tango > คลิก Capture workflow
    • จากนั้นใช้งานค้นหา google ปกติ แล้วไปดูผลลัพธ์กัน

    มันจะ gen คู่มือมาให้ดังรูปข้างต้น สามารถแก้ไขได้ทุกจุด ทั้งข้อความแต่ละ step ลบหรือ duplicate ก็ได้ จะ zoom รูปก็ได้ และสามารถ Share & Export เพื่อนำไปทำต่อด้วย word หรือนำไปใช้เลยด้วย pdf

    เป็นไงหล่ะ ง่ายใช่มั๊ย ลองไปเล่นกันดูนะ ^_^

  • เรียนรู้ RPA โดยใช้ ui-path (Excel x Mail)

    จากบทความที่ผ่านมา ผู้เขียนได้แนะนำ Tool ของ RPA  คือ UiPath  และการติดตั้ง UiPath StudioX  ไปแล้ว ในบทความนี้จะอธิบายวิธีการใช้งาน ในที่นี้ ใช้ UiPathStudio X อ่านค่าจาก Excel และส่งเมลไปยังตามข้อมูลใน Excel ตัวอย่างเช่น อาจารย์ที่ปรึกษาต้องการส่งเมลไปยังนักศึกษาในที่ปรึกษาทั้งหมด ในคราวเดียวกัน เนื้อหาในเมลแต่ละคนอาจจะเหมือนหรือแตกต่างกันก็ได้ ซึ่งอาจารย์ได้เตรียมข้อมูลไว้ในรูปแบบ Excel

    เริ่มต้น ผู้เขียนจะเตรียมข้อมูลใน Excel ตามนี้

                  โดยจะมีฟิลด์หลัก สำหรับการส่งเมล ดังนี้

    1. EMAIL  ไว้เก็บ E-mail Address ของคนที่เราต้องการส่ง
    2. Subject หัวเรื่องของ E-mail ที่ต้องการส่ง
    3. Body คือส่วนของ เนื้อหาที่ต้องการให้ทราบ

                  เรามาสร้าง bot การส่งเมลกันเลย

    1. เริ่มต้นให้ทำการสร้าง Project
    2. คำสั่งแรกให้เปิด Excel ไฟล์ ขึ้นมา  โดยการเลือก Activites > Resources > Use Excel File และลากคำสั่งมาวางที่ตำแหน่ง Main ดังภาพ

    3. จากนั้นกำหนดไฟล์ Excel ที่เก็บข้อมูลที่เราได้เตรียมไว้ตามขั้นตอนที่ผ่านมา โดยการกดที่รูป Folder  ดังภาพ

    4. ขั้นตอนต่อไป คือการสั่งให้ UiPath อ่านข้อมูล โดยการอ่านข้อมูลทีละแถว และนำข้อมูลดังกล่าวไปส่งเมลต่อไป  โดยให้ไปที่ Activites และเลือก “For Each Excel Row”  และลากคำสั่งไปวางไว้ในภายในของคำสั่ง  Use Excel File ดังรูป

    5. คำสั่ง For each Excel Row กำหนดคุณสมบัติ ดังนี้ In range คือ ช่วงของข้อมูลที่เลือก โดยในที่นี้จะเลือกข้อมูลทั้ง Sheet ชื่อ Sheet Test ให้ติ๊กเลือก Has headers ด้วย

    6. ต่อไปเป็น คำสั่งส่งเมลโดยการเลือก Activites > Resources > Use Desktop Outlook App และลากคำสั่งมาวางที่ตำแหน่ง Drop Activity Here
    Use Desktop Outlook App คือการเรียกใช้ฟังก์ชันส่งเมล จากโปรแกรม Outlook ที่ติดตั้งไว้ในเครื่องของเรา ซึ่งเป็นวิธีที่ง่ายที่สุด เพียงแค่ login เข้าใช้ผ่าน Microsoft Account ไว้  โปรแกรม UiPath ก็จะเรียกใช้งานฟังก์ชันส่งเมลได้ทันที โดยในบทความนี้ ขอนำเสนอวิธีใช้  Use Desktop Outlook App ค่ะ

    7. ส่วนถัดไป เลือกคำสั่งในการส่งเมล โดยไปที่ Activites > Business > Mail > Send Email และลากคำสั่งมาวางที่ตำแหน่ง Drop Activity Here

    คำสั่ง Send Email มีคุณสมบัติที่ต้องกำหนด  โดยให้ทำการเลือก Field ของ Excel และแมพให้ตรงกัน ดังนี้

    • To  คือ E-mail ของปลายทางที่ต้องการส่ง
    • Subject  คือ  หัวเรื่องของ Email
    • Body คือ ส่วนของเนื้อหา ในส่วนนี้เราสามารถพิมพ์เนื้อหาเองได้ หรือจะดึงจาก Field ของ Excel และนอกจากนี้เราก็สามารถ ดึง Field ของ Excel มาแสดงได้มากกว่า 1 Field โดยการเลือกตัวอย่างดังรูปด้านล่างค่ะ
    • Save  as draft  ส่วนนี้ถือเป็นส่วนที่สำคัญ ในการทดสอบการทำงานให้เราติ๊กเครื่องหมายถูกไว้ก่อน เพื่อป้องกันการส่งเมลไปยังปลายทางจริง ๆ  เมื่อเราทำการทดสอบการทำงานของโปรแกรมเสร็จสิ้นถูกต้องเรียบร้อยแล้ว  จึงค่อยติ๊กเครื่องหมายถูกออก 
    • Attachments  แนบไฟล์ที่ต้องการ

    8. ต่อไปให้เราทำการกดปุ่ม Run เพื่อทำการรันการทำงานของโปรแกรม และสามารถดูผลการทำงานได้จาก Output จะแสดงด้านล่าง

    ให้เราไปดูที่กล่อง draft ที่เมลของเราว่า ข้อความที่เราส่งเป็นอย่างไร

    จากรูปข้างต้น จะเห็นได้ว่าแสดงเป็น Drafts 13 รายการ ตามที่ได้เตรียมข้อมูลใน Excel

    ขั้นตอนสุดท้ายคือการ Publish โปรแกรม ให้เรียกใช้งานได้  **ให้เอาเครื่องหมายติ๊กถูก หน้า Save as daft ออกด้วยนะเวลาใช้จริง  แล้วกดปุ่ม “Publish”

    กำหนดรายละเอียด เช่น ชื่อโปรแกรม, เวอร์ชั่น เป็นต้น เสร็จเรียบร้อย กดปุ่ม “Publish”

    จากนั้น ให้เราเปิดโปรแกรม “UiPath Assistant”  ดังภาพ จะเป็นโปรแกรมของเราขึ้นมา สามารถ run โปรแกรมที่เราสร้าง ช่องทางนี้ได้เลย

    จะเห็นว่า  การสร้าง UiPath ไม่มีการเขียนโค้ดเลย และคำสั่งที่เรียกใช้งาน ก็เข้าใจได้ง่าย แม้ไม่ได้เป็นสาย Programming ก็สามารถทำเองง่าย ๆ ได้ 

  • DAX (Data Analysis Expression) ฉบับเริ่มใช้งาน

    DAX (Data Analysis Expression) ใช้เพื่อการคำนวณใน Data Model 

    โดย DAX ประกอบด้วย Functions Operation และConstants เพื่อคำนวณและ/หรือแปลงข้อมูลเพื่อสร้าง Measure, Column, Table  

    ใช้งานได้ในผลิตภัณฑ์ของ Microsoft ดังนี้ Power BI, Excel (Power Pivot), SQL Server

     โดยมีสูตรต่าง ๆ มากมาย มีประโยชน์มากในการทำงานเกี่ยวกับ Time Intelligence การสร้าง Date Dimension การคำนวณโดยใช้ Relationships เพื่อเตรียมการคำนวณให้ไปใช้ในการสร้าง Visualization ต่อไป

    Column หรือ Measure สร้างอะไรดี

    • New Column จะมีการสร้างขึ้นมาจริงใน Data Model โดยการคำนวณขึ้นตอน Refresh Data ซึ่งต้องใช้พื้นที่จัดเก็บจริง  ใน Chart ต่างๆใน Report สามารถใช้ในฐานะ Category ได้
    • New Measure จะถูกคำนวณใน Report และค่าจะเปลี่ยนไปจามการ Filter ที่เปลี่ยนไป เมื่อ Filter เปลี่ยนจะมีการคำนวณใหม่ตลอด

    Functions ที่น่าสนใจสำหรับใช้งาน

    1. Format Number ถ้าต้องการใส่ Format ให้กับตัวเลข เช่น $ ใส่ “,” จุดทศนิยมต้องทำอย่างไร 

    ต้องทำเป็น Measure ดังนี้
    1.1 Click ขวาที่ Table Model และ New measure

    1.2 ส่วนหมายเลข 1 แก้ไขชือ Measure
    ส่วนหมายเลข 2 Function ที่ต้องการใช้ในที่นี้ใช้ Function Count
    ส่วนหมายเลข 3 เลือกรูปแบบการจัด Formate ของตัวเลขตามที่ต้องการ

    1. RELATED วิธีการดึงข้อมูลจากตารางอื่นๆมาเป็น Column ในตารางที่กำลังทำงานอยู่ โดยการสร้างNew Column แล้วใช้ Function  RELATED ดึงข้อมูลจากอีกตารางที่ต้องสร้าง Relationship ไว้แล้วและต้องเป็น Relation ที่ active แบบ One:one หรือ One:Many แต่ความสัมพันธ์แบบ Many:Many จะไม่สามารถทำได้

    2.1 สร้าง Column ใหม่

    2.2 ใส่ชื่อ Column Name และ Function RELATE(TABLE_NAME[COLUMN NAME]) แล้ว Enter หรือ Click เครื่องหมายถูกด้านหน้า ชื่อ column  ในตารางที่เราต้องการก็จะมี Column เพิ่มขึ้นมาอีก 1 Column ตามที่ต้องการ

    3. การใช้ IF ใน DAX
    IF(<logical_test>, <value_if_true>[, <value_if_false>])

    ตัวอย่าง
    สัญชาติ = IF(student[Nationality]==”T”,”ไทย”,”ต่างชาติ”)

    1. การใช้ Switch ใน DAX
      SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])  
    สถานะไม่ปกติ = SWITCH(student[STATUS_DESC],
    “ลาออก”,”ลาออก”,
    “ลาออก (พ้นสภาพฯ)”,
    “ลาออก”,”ลาออก(พ้นสภาพฯ)”,
    “ลาออก”,”ไม่มาลงทะเบียน”,
    “ไม่มาลงทะเบียน”,”ไม่มาลงทะเบียน (พ้นสภาพฯ)”,
    “ไม่มาลงทะเบียน”,”ไม่มาลงทะเบียน(พ้นสภาพฯ)”,
    “ไม่มาลงทะเบียน”,””)

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

    Operations 

    ประกอบด้วย arithmetic, comparison, text concatenation, and logical

    Operator typeSymbol and use
    Parenthesis operator+ (addition)
    – (subtraction/
    sign)
    * (multiplication)
    / (division)
    ^ (exponentiation)
    Comparison operators= (equal to)
    > (greater than)
    < (less than)
    >= (greater than or equal to)
    <= (less than or equal to)
    <> (not equal to)
    Text concatenation operator& (concatenation)
    Logic operators&& (and)
    || (or)

    DAX Programming

    การเขียน Code แบบพื้นฐานดังนี้

    • ตัวแปร  VAR <name> = <expression>  

    เป็นการกำหนดตัวแปรที่จะใช้งาน

    VAR Number of students = DISTINCTCOUNT(students[student_id])  
    • Return

    ส่งค่าออกมาเมื่อมีการคำนวณในการค่า Measure

    total Student and Faculty =
    VAR Number of students = DISTINCTCOUNT(students[student_id])  
    VAR Number of faculty = DISTINCTCOUNT(students[fac_id])  
    VAR total = “มีนักศึกษาทั้งหมด” & Number of students & “คน ใน ” & Number of faculty & “ คณะ”

    RETURN    
    total 

    อ้างอิง

    https://docs.microsoft.com/en-us/dax/

  • Google Form ระบบรับสมัครพร้อมสร้างไฟล์ PDF และส่งสำเนาไฟล์ให้ผู้สมัคร ฟรีไม่จำกัด

    ขออธิบายหลักการทำงานคราวๆ ของระบบนะครับ คือเมื่อผู้สมัครทำการกรอกข้อมูลที่ Google Form แล้วระบบจะทำการบันทึกข้อมูลลง Google Sheets ตามปกติ หลังจากนั้นก็จะนำข้อมูลไปสร้างเป็นไฟล์ PDF ให้พร้อมสำเนาไฟล์ PDF ให้ผู้สมัครทางอีเมล์

    (more…)
  • เรียนรู้ RPA โดยใช้ ui-path

    Robotic Process Automation หรือ RPA  คือการนำเอาหุ่นยนต์ (ในที่นี้คือซอฟแวร์หุ่นยนต์) เข้ามาช่วยในการทำงานอย่างไหนอย่างหนึ่ง  ซึ่งคำที่คนส่วนใหญ่ได้ยินกัน คือ Bot นั่นเอง 😊 ซึ่งงานที่เหมาะสมที่จะนำเอาRPA มาช่วยในการทำงานนั้น เป็นงาน Routine ที่ต้องมานั่งทำแบบเดิมๆ ทุกวัน งานที่ต้องทำซ้ำๆ ง่ายๆ ที่มีปริมาณงานเยอะ ซึ่งเป็นงานที่มีขั้นตอนลำดับชัดเจน  เช่น งานคัดลอกข้อมูลจากเว็บ  งานส่งอีเมล์ งานกรอกข้อมูล

    ในปัจจุบัน RPA ก็มี Tool ด้วยกันหลายๆ ตัว  แต่ที่ผู้เขียนจะใช้ คือ UiPath  ตัวอื่นๆ ก็มี Automation Anywhere , Blue Prism, Work Fusion ซึ่งเป็น Tool ที่ใช้งานได้ง่ายๆ มากๆ ไม่ต้องเขียนโปรแกรม ลากๆ คลิกๆ เลือก อย่างเดียว …

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

    ซึ่งงานนี้เราจะนำเอา Bot มาช่วยในการดึงข้อมูลจาก Excel แล้วส่งเมลเอง โดยการกดปุ่ม เพียงแค่ คลิกเดียว!

    ขั้นตอนที่   1   การติดตั้ง UiPath

    1.เข้าไปยังเว็บไซต์ของ UiPath  คือ  Automation Platform – Leading RPA Company | UiPath 

     จากนั้นกดปุ่ม

    2. ทำการ Sign-in และทำตามขั้นตอน  จากนั้นมายังหน้าจอดังภาพ กด download ไฟล์โปรแกรม มาติดตั้งลงเครื่องได้เลย

    3. ทำการติดตั้งได้เลย    ทำการคลิกปุ่มต่อไปเรื่อยๆ จนมาหยุดหน้าเลือก Version ของโปรแกรม ตามภาพข้าล่างนี้  ให้ทำการเลือก UiPath StudioX ซึ่งจะเป็น Version สำหรับการสร้าง Bot เบื้องต้น ซึ่งไม่ต้องเขียนโปรแกรม  โดย Version นี้จะเน้นการลากวาง คำสั่ง และเลือกคำสั่ง ทำให้ง่าย สำหรับคนที่ไม่ได้เป็น Programmer ส่วน UiPath Studio จะมีการเขียนโปรแกรมคำสั่งเพื่อ รองรับงานที่ซับซ้อนมากยิ่งขึ้น

    4. จากนั้นเปิดโปรแกรมได้เลย   เริ่มต้นระบบจะแนะนำ  การใช้งานตามภาพ

    5. จากนั้นเริ่มต้น  โปรแกรมจะเลือกให้เราสร้าง Project ก่อน  โดยให้เลือกเป็น Blank Task ให้กำหนดชื่อและที่เก็บไฟล์ และคำอธิบายของงานนี้  จากนั้น กด “Create” ได้เลย

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

                  6.1 ส่วนที่  1 :   MAIN    เป็นส่วนที่เรานำ คำสั่งหรือสิ่งที่ต้องการให้ bot ทำ มาลากวาง โดยจะเรียง คำสั่ง จากบน ลง ล่าง  (ให้นึกถึงการเขียน flow chart) 

                  6.2 ส่วนที่ 2 : Activities  เป็นส่วนของคำสั่ง ที่โปรแกรมจัดเตรียมมาให้ เช่น การกรอกข้อมูล  การคลิก การเปิด mail การเปิด App เปิด web  เห็นไหมว่า ง่ายมาก ไม่ต้องเขียนโค้ดเลย  โดยอยากได้คำสั่งใดก็เลือก และลากมาวางที่ Main ได้เลย

                  6.3 ส่วนที่ 3 :  Properties ส่วนที่กำหนดคุณสมบัติ และค่าของ Activities

    6.4 ส่วนที่ 4 : run เอาไว้ รัน bot ให้ทำงานตามที่เราสั่ง

                  6.5 ส่วนที่ 5 : Publish อธิบาย ง่ายๆ คือ การทำตัว exe ของโปเจค ที่เราทำนั่นเอง โดย ui-path จะมีอีกโปรแกรมหนึ่งไว้สำหรับเก็บ โปรแกรม Bot ที่เราสร้างไว้  ให้สามารถเรียกใช้งานได้ง่าย (จะอธิบายในส่วนถัดไป)

    ในบทถัดไป ทางผู้เรียนจะนำตัวอย่างข้อมุล และวิธีการเขียน Bot มาแนะนำจ้าาาา

  • การเข้ารหัสข้อมูลด้วย ORACLE DBMS_CRYPTO

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

                  ข้อมูลบนระบบจัดการฐานข้อมูล ORACLE มีฟังก์ชันสำหรับการเข้ารหัสข้อมูล (Encrypt) และถอดรหัสข้อมูล (Decrypt) สำหรับข้อความได้ในหลายๆ Algorithm ดังนี้

    ENCRYPT_DESData Encryption Standard. Block cipher. Uses key length of 56 bits.
    ENCRYPT_3DES_2KEYData Encryption Standard. Block cipher. Operates on a block 3 times with 2 keys. Effective key length of 112 bits.
    ENCRYPT_3DESData Encryption Standard. Block cipher. Operates on a block 3 times.
    ENCRYPT_AES128Advanced Encryption Standard. Block cipher. Uses 128-bit key size.
    ENCRYPT_AES192Advanced Encryption Standard. Block cipher. Uses 192-bit key size.
    ENCRYPT_AES256Advanced Encryption Standard. Block cipher. Uses 256-bit key size.
    ENCRYPT_RC4Stream cipher. Uses a secret, randomly generated key unique to each session.

    สำหรับตัวอย่างในวันนี้จะแสดงการเข้ารหัสข้อมูลด้วย Algorithm DES ซึ่งคีย์จะมีความยาว 56 bits

    เนื่องจากการเข้ารหัสและถอดรหัสจะใช้งานคู่กัน ดังนั้นเราสามารถเขียนทั้งสองฟังก์ชันไว้ใน Package ดังนี้

    CREATE OR REPLACE PACKAGE EN_DE
    AS
    FUNCTION ENCRYPT (p_plainText VARCHAR2) RETURN RAW DETERMINISTIC;
    FUNCTION DECRYPT (p_encryptedText RAW) RETURN VARCHAR2 DETERMINISTIC;
    END;
    /
    
    
    CREATE OR REPLACE PACKAGE BODY "EN_DE"
    AS
    encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_DES
    + DBMS_CRYPTO.CHAIN_CBC
    + DBMS_CRYPTO.PAD_PKCS5;
       /*
       ENCRYPT_DES is the encryption algorithem. Data Encryption Standard. Block cipher. Uses key length of 56 bits.
       CHAIN_CBC Cipher Block Chaining. Plaintext is XORed with the previous ciphertext block before it is encrypted.
       PAD_PKCS5 Provides padding which complies with the PKCS #5: Password-Based Cryptography Standard
       */
       encryption_key RAW (32) := UTL_RAW.cast_to_raw('OneTwoThree');
    -- The encryption key for DES algorithem, should be 8 bytes or more. 
    
    FUNCTION ENCRYPT (p_plainText VARCHAR2) RETURN RAW DETERMINISTIC
     IS
        encrypted_raw      RAW (32767);
     BEGIN
        encrypted_raw := DBMS_CRYPTO.ENCRYPT
        (
           src => UTL_RAW.CAST_TO_RAW (p_plainText),
           typ => encryption_type,
           KEY => encryption_key
        );
       RETURN encrypted_raw;
     END ENCRYPT;
    
     FUNCTION DECRYPT (p_encryptedText RAW) RETURN VARCHAR2 DETERMINISTIC
     IS
        decrypted_raw      RAW (32767);
     BEGIN
        decrypted_raw := DBMS_CRYPTO.DECRYPT
        (
            src => p_encryptedText,
            typ => encryption_type,
            KEY => encryption_key
        );
        RETURN (UTL_RAW.CAST_TO_VARCHAR2 (decrypted_raw));
     END DECRYPT;

    END;
    /

    
    
    
    
    

    จากคำสั่งการสร้าง Package ข้างต้นเป็นการเข้ารหัสและถอดรหัสโดยใช้ Algorithm แบบ DES การเรียกใช้งานสามารถเรียกผ่านคำสั่งบน SQL Plus ได้ดังภาพ

    จากการทำงานจะพบว่าเราสามารถเข้ารหัสข้อมูลอย่างง่ายด้วย Algorithm DES ได้ หากต้องการใช้ Algorithm อื่น สามารถเปลี่ยนค่าได้จากที่กำหนดไว้ใน Package ได้ โดยต้องคำนึงถึงขนาดของคีย์ที่เข้ารหัสด้วย เช่น AES ต้องมีขนาดคีย์เป็น 128 bits, 256 bits เป็นต้น

  • ETL ต้องตรวจสอบอะไรบ้างเพื่อความมั่นใจในโอน ย้ายข้อมูล

    ETL (Extract, Transform, Load) ประโยชน์ที่สามารถนำไปประยุกต์ใช้

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

    ============================

    ETL Tools ตอนนี้มีอยู่หลายค่ายหลายโปรแกรม ทั้งฟรีและขาย สามารถนำมาประยุกร์ใช้งานได้ ตัวอย่างเช่น

    • Microsoft SQL Server Integration Services (SSIS)
    • Oracle Data Integrator
    • Oracle Warehouse Builder
    • IBM – Infosphere Information Server
    • Pentaho Data Integration
    • Apache Nifi 
    • SAP – BusinessObjects Data Integrator
    • Sybase ETL

    ==========================

    ต้องตรวจสอบอะไรบ้างเมื่อท่านต้องทำ ETL

    1. Metadata Testing เป็นการทดสอบส่วนประกอบของข้อมูลพวกชนิดของข้อมูล ขนาดและเงื่อนไขต่างๆของข้อมูล
    2. Data Completeness Testing ความสมบูรณ์ของข้อมูลต้องสุ่มทดสอบข้อมูล เช่น คีย์ที่ใช้เชื่อมข้อมูลระหว่างตารางไม่ควรจะเป็น NULL
    3. Data Quality Testing คุณภาพของข้อมูล เช่นข้อมูลชื่อประเทศเดียวกันต้องสะกดเหมือนกันทั้งหมด การหาข้อมูลซ้ำซ่อนแบบไม่ปกติ
    4. Data Transformation Testing ดักจับ error ระหว่างการถ่ายโอนข้อมูล
    5. ETL Regression Testing ทดสอบเมื่อมีการเปลี่ยนแปลงกระบวนการในการทำ ETL
    6. Reference Data Testing การทดสอบกับข้อมูลที่เป็นสากลทั่วไปใช้กัน เช่น ชื่อ ตำบล อำเภอ จังหวัด ควรต้องตรงกันกับข้อมูลของราชการเท่านั้น
    7. Incremental ETL Testing เป็นการทดสอบโดยการค่อยๆเพิ่มกระบวนการถ่ายโอนข้อมูลเป็นขั้นๆเพื่อหาปัญหาของการถ่ายโอน
    8. ETL Integration Testing เป็นการทดสอบภาพรวมของการทำงานรวมกันของ module เงื่อนไขต่างๆในการถ่ายโอนข้อมูล
    9. ETL Performance Testing เป็นการประเมินเรื่องเวลาและปริมาณข้อมูลเพื่อจะได้ทราบถึงระยะเวลาการทำงานที่ควรจะเกิดขึ้นกับข้อมูลปริมาณที่ต้องการ

    Metadata Testing สิ่งที่ต้องตรวจสอบ

    1. Data Type ชนิดของข้อมูลระหว่าง Source และ Target 
    2. Data Length ความยาวของข้อมูลแบบต่างๆ เช่น String Char Varchar
    3. Index / Constraint ตรวจสอบว่ามีการกำหนดข้อจำกัด และดัชนีที่เหมาะสมบนตารางฐานข้อมูลตามข้อกำหนดที่ออกแบบได้ ตรวจสอบว่าคอลัมน์ที่ไม่สามารถเป็นค่าว่างมีข้อ จำกัด “NOT NULL” ตรวจสอบว่ามีการจัด Index หรือ Key ต่างๆครบถ้วนหรือไม่
    4. ช่วงของข้อมูล เช่น พ.ศ.ต้องมีช่วงประมาณไหน เพื่อหาความผิดปกติ ช่วงของวันที่ต่างๆ
    5. Build in Function ต่างๆรอบรับความต้องการที่จะดำเนินการหรือไม่ เช่น Oracle Build in funciton TO_DATE จะรองรับข้อมูลวันที่เป็น ค.ศ. เท่านั้น
    6. การตั้งชื่อที่สื่อได้ดีเป็นที่เข้าใจทั่วกัน
    7. เงือนไขหรือ logic การเพิ่ม Compute Column ที่เหมาะสม
    8. การแปลงข้อมูลไม่ควรเกิดจากหลายๆแหล่งเพราะจะทำให้การแก้ไขทำได้ลำบากมากขึ้น เช่น มีการสร้าง View มาหลายชั้นก่อนที่จะมาผ่านกระบวนการ ETL หรือเมื่อผ่านกระบวนการ ETL แล้วค่อยไปคำนวณหรือจัดการข้อมูลอีกขั้นตอนต่อๆไป 

    การตรวจสอบการเปลี่ยนแปลงของข้อมูลของการทำ ETL แต่ละรอบ

    1.Track changes ตรวจสอบ metadata ตามเวลาที่กำหนด ทั้ง Source และ Target และส่วนของการพ้ฒนา

    2.Compare table metadata ทั้ง Source และ Target และส่วนของการพ้ฒนา ชื่อของตารางและColumn  ขนาดของ Column

    3.Compare column data types

    4.ตรวจสอบ Look Up table ต่างๆว่าข้อมูล Update ให้เหมาะสมและครบถ้วนแล้วหรือไม่

    Data Completeness Testing

    1. Record Count Validation เป็นพื้นฐานคือนับจำนวน records ต้นทาง ปลายทาง โดยลอง Group by ข้อมูลแบบต่างๆและที่สำคัญตรวจสอบ Null Values ข้อมูลสำคัญๆ
    2. Column Data Profile Validation ค่าที่สามารถนำมาทดลองได้คือเปรียบเทีบย unique values, max, min, avg, max length, min length ค่าของ Column และ null values ของ Column
    1. เปรียบเทียบภาพร่วมของข้อมูลทั้งหมดของ Source และ Target เช่น การนับจำนวนตามกลุ่มที่เหมาะสม

    Data Quality tests ตรวจสอบคุณภาพของข้อมูล

    1. Duplicate Data Checks
    SELECT fst_name, lst_name, mid_name, date_of_birth, count(1) FROM Customer GROUP BY fst_name, lst_name, mid_name HAVING count(1)>1
    1. Data Validation Rules  ธรรมชาติของข้อมูลในแต่ละ Column ค่าควรเป็นอย่างไร เช่น ช่วงของข้อมูลอายุคนไม่ควรจะเกิด 120 เป็นต้น ช่วงของข้อมูลแบบวันที่ควรจะไม่เกินเท่าไรในแต่ละช่วงข้อมูล
    2. Data Integrity Checks
      1. นับค่า null ของ foreign key ในตารางลูก
      2. นับค่าที่ไม่มีของ foreign key ในตารางลูก

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

  • Blazor Server Application : วิธีการแปลงรูปภาพ เป็น base64 สำหรับเก็บข้อมูล

    แนะนำวิธีการแปลงรูปภาพ เป็น base64 เพื่อเก็บข้อมูล มีขั้นตอนดังนี้

    1) สร้าง Project ผ่าน Visual Studio 2019 เลือก Blazor Server App

    2) เลือก Framework เป็น .NET 5.0

    3) ติดตั้ง Add-on ชื่อ System.Drawing.Common ผ่านทาง NuGet

    4) เปิดไฟล์ Index.razor จากนั้นเขียน Code ดังนี้

    5) หน้าจอแสดงปุ่ม “การแปลง (ไฟล์รูปภาพ เป็น Base64)”

    6) ผลลัพธ์จากการแปลงไฟล์รูปภาพ เป็น Base64

    หมายเหตุ: นามสกุลไฟล์รูปภาพ (picture.png) ต้องตรงกับ data:image/png;base64 สำหรับแสดงผล

  • สร้างข้อความแจ้งเตือนด้วย Blazored Toast

    ข้อความแจ้งเตือนการดำเนินการต่าง ๆ ไม่ว่าจะเป็นข้อความ Success, Error, Warning หรือ Information ภายในแอพ เป็นอีกหนึ่งฟังก์ชั่นที่มีการนำมาใช้งานบ่อยๆ เพื่อทำให้ระบบน่าใช้งานมากยิ่งขึ้น ในการเขียนแอพด้วย Blazor ก็มีของฟรีให้ติดตั้งและใช้งานได้เลย ชื่อว่า Blazored Toast ซึ่งเป็น JavaScript ที่ได้รับการ Implement ให้ใช้งานกับ Blazor ได้

    ตัวอย่างการใช้ Blazored Toast

    ก่อนอื่นให้สร้าง Blazor Server App Project ตามขั้นตอนใน Blog(เขียนเว็บแอพแบบ SPA ด้วย Blazor (C#)) ก่อน จากนั้นทำตามขั้นตอนดังนี้

    ติดตั้ง Blazored Toast ผ่าน NuGet package manager

    1. คลิกเมนู Project

    2. คลิก Manage NuGet Packages

    จะปรากฎหน้าจอ NuGet Package Manager ให้ทำดังนี้

    1. คลิก Browse

    2. พิมพ์ Blazored Toast

    3. คลิกเลือก Blazored.Toast 4. เลือกเวอร์ชั่นล่าสุด และคลิก Install

    การตั้งค่า

    1. Register Services โดยการปรับปรุงไฟล์ Startup.cs ใส่โค้ด Using Blazored.Toast และเพิ่มโค้ด services.AddBlazoredToast(); ในฟังก์ชั่น ConfigureServices ดังรูป

    2. เปิดไฟล์ _Import.razor เพิ่มโค้ดดังนี้

    @using Blazored.Toast

    @using Blazored.Toast.Services

    3. ตั้งค่าเริ่มต้นก่อนใช้งานใน MainLayout.razor โดยการเปิดไฟล์ MainLayout.razor และเพิ่มโค้ดดังรูป

    4. อ้างอิง Style sheet ในไฟล์ _Host.cshtml

    <link href=”_content/Blazored.Toast/blazored-toast.min.css” rel=”stylesheet” />

    การนำไปใช้งาน

    1. สร้างไฟล์ใหม่ชื่อ ToastDemo.razor โดยคลิกขวาที่โฟลเดอร์ Pages เลือก Add -> Razor Components ดังรูป

    2. เลือก Razor Component ตั้งชื่อไฟล์ ToastDemo.razor และคลิกปุ่ม Add

    3. เขียนโค้ดใช้งาน โดยให้ inject IToastService ก่อน จากนั้นจึงเขียนโค้ดตัวอย่างโดยให้ Toast ทำงานเมื่อคลิกปุ่ม 4 ปุ่ม เพื่อแสดงข้อความแจ้งเตือน Information, Warning, Success และ Error

    4. กด F5 และเปิด Url  https://localhost:44381/ToastDemo จากนั้นลองคลิกแต่ละปุ่มจะได้ผลลัพธ์ดังรูป

    จะเห็นว่าเราไม่จำเป็นต้องเขียน JavaScript เองก็สามารถใช้งาน Toast ได้ ถือว่าเป็นการประหยัดเวลาในส่วนนี้ และทำให้เราสามารถโฟกัสการเขียนโค้ดในส่วนที่เป็น Core หลักของระบบได้อย่างเต็มที่