การแปลงตัวรวบรวมใน Informatica พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การแปลงข้อมูลแบบ Aggregator ใน Informatica คืออ็อบเจ็กต์ที่ทำงานอยู่ซึ่งทำการคำนวณต่างๆ เช่น ผลรวม ค่าเฉลี่ย และจำนวนนับในกลุ่มของแถว โดยจะเก็บแถวเหล่านั้นไว้ในแคชการรวมข้อมูลจนกว่าแต่ละกลุ่มจะเสร็จสมบูรณ์

การแปลงตัวรวบรวมคืออะไร?
การแปลงข้อมูลแบบ Aggregator เป็นการแปลงข้อมูลเชิงรุกที่ทำการคำนวณแบบรวม เช่น ผลรวม ค่าเฉลี่ย และจำนวนนับ
ตัวอย่างเช่น หากคุณต้องการคำนวณผลรวมของเงินเดือนของพนักงานทั้งหมดแยกตามแผนก คุณสามารถใช้การแปลง Aggregator ได้
การดำเนินการรวมจะดำเนินการกับกลุ่มของแถว ดังนั้น จำเป็นต้องมีตัวแทนชั่วคราวเพื่อจัดเก็บระเบียนทั้งหมดเหล่านี้และดำเนินการคำนวณ
ในการดำเนินการนี้ จะใช้แคชตัวรวม (Aggregator cache) ซึ่งเป็นหน่วยความจำหลักชั่วคราวที่จัดสรรให้กับกระบวนการแปลงข้อมูลแบบรวม (Aggregator transformation) เพื่อดำเนินการดังกล่าว โดยแบ่งออกเป็นสองส่วน คือ แคชดัชนี (Index cache) เก็บค่ากลุ่ม และแคชข้อมูล (Data cache) เก็บข้อมูลแถวที่กำลังถูกรวม
การแปลงข้อมูลนี้ทำงานอยู่เนื่องจากมีการเปลี่ยนแปลงจำนวนแถวในไปป์ไลน์ ข้อมูลพนักงานหลายพันรายการสามารถเข้าสู่ระบบได้ แต่จะมีเพียงแถวเดียวต่อแผนกเท่านั้นที่ออกจากระบบ
วิธีใช้งาน Aggregator Transformation ใน Informatica
ในตัวอย่างนี้ เราจะคำนวณผลรวมของเงินเดือนตามแผนก โดยเราต้องการคอลัมน์ใหม่เพื่อจัดเก็บผลรวมนี้ ดังนั้น ก่อนอื่น เราจะเตรียมคอลัมน์ใหม่
ขั้นตอน 1) สร้างตารางเป้าหมายฐานข้อมูลใหม่ เช่น “sum_sal_deptwise” โดยใช้สคริปต์ด้านล่าง คุณจะเห็นตารางเป้าหมายฐานข้อมูลใหม่ถูกสร้างขึ้นภายใต้... Targetโฟลเดอร์ s ในขั้นตอนถัดไป
ดาวน์โหลดไฟล์ Create_table_sal_deptwise.txt ด้านบน
ขั้นตอน 2) สร้างใหม่ แผนที่ping “m_sum_sal_deptwise”
เพื่อสร้างแผนที่ใหม่pingเราต้องการตารางต้นทาง (EMP) และตารางปลายทาง (sum_sal_deptwise) ใน Mapping นักออกแบบ ดังนั้นเราจึงต้องการ
- นำเข้าตารางเป้าหมาย “sum_sal_deptwise” ลงในแผนที่ping.
- นำเข้าตารางต้นฉบับ “emp”
คำจำกัดความทั้งสองปรากฏบนผืนผ้าใบแล้ว ดังที่แสดงด้านล่าง
ขั้นตอน 3) ในแผนที่ping,
- จาก แหล่งที่มารอบคัดเลือกลบคอลัมน์ empno, ename, job, mgr, hiredate และ comm ออก เหลือไว้เพียงคอลัมน์ deptno และ sal เท่านั้น
- สร้างการแปลงข้อมูลแบบ Aggregator ใหม่โดยใช้เมนูในกล่องเครื่องมือตามที่แสดงในภาพหน้าจอ เมื่อคุณคลิกไอคอน Aggregator การแปลงข้อมูลแบบ Aggregator ใหม่จะถูกสร้างขึ้น
อ็อบเจ็กต์ AGGTRANS ใหม่จะปรากฏขึ้นข้างๆ Source Qualifier ที่ถูกตัดแต่งแล้ว
ขั้นตอน 4) ลากและวางคอลัมน์ SAL และ DEPTNO จาก Source Qualifier (SQ_EMP) ไปยังการแปลง Aggregator ตอนนี้พอร์ตทั้งสองเชื่อมโยงเข้ากับ AGGTRANS แล้ว
ขั้นตอน 5) Double-คลิกที่การแปลง Aggregator เพื่อเปิดคุณสมบัติ จากนั้น
- เพิ่มพอร์ตใหม่ในการเปลี่ยนแปลง
- เปลี่ยนชื่อพอร์ตเป็น SUM_SAL
- เปลี่ยนชนิดข้อมูลของพอร์ตใหม่นี้เป็นสองเท่า
- กำหนดให้พอร์ตนี้เป็นพอร์ตเอาต์พุตโดยการเลือกช่องทำเครื่องหมายของพอร์ตเอาต์พุต
- คลิกตัวเลือกนิพจน์
แท็บ Ports ตอนนี้แสดงรายการ SAL, DEPTNO และพอร์ตเอาต์พุตใหม่ SUM_SAL แล้ว
ขั้นตอน 6) ในหน้าต่างตัวแก้ไขนิพจน์
- เพิ่มนิพจน์ sum(SAL); คุณต้องเขียนนิพจน์นี้ด้วยตนเอง
- กดปุ่ม OK เพื่อเปิดหน้าต่างแก้ไขการแปลง (Edit Transformations) อีกครั้ง
ตัวแก้ไขนิพจน์จะแสดงนิพจน์รวมที่กำหนดให้กับ SUM_SAL
ขั้นตอน 7) ในหน้าต่างแก้ไขการแปลงข้อมูล ให้เลือกตัวเลือก “จัดกลุ่มตาม” โดยทำเครื่องหมายในช่องสี่เหลี่ยมหน้าคอลัมน์ deptno แล้วคลิก ตกลง การเลือกจัดกลุ่มตาม deptno จะเป็นการสั่งให้ Informatica จัดกลุ่มเงินเดือนตาม deptno
ขั้นตอน 8) เชื่อมโยงคอลัมน์ deptno และ sum_sal จากการแปลง Aggregator ไปยังตารางเป้าหมาย แผนที่นี้สร้างขึ้นเพื่อเชื่อมโยงคอลัมน์ deptno และ sum_sal เข้าด้วยกันping กระบวนการจึงเสร็จสมบูรณ์ตั้งแต่ต้นทางจนถึงปลายทาง
ตอนนี้บันทึกแผนที่ping และดำเนินการหลังจากสร้างใหม่ เซสชั่น สำหรับแผนที่นี้pingตารางเป้าหมายจะมีผลรวมของเงินเดือนแยกตามแผนก ด้วยวิธีนี้ เราสามารถใช้การแปลงข้อมูลแบบ Aggregator เพื่อคำนวณผลลัพธ์รวมได้
จัดกลุ่มตามพอร์ตในการแปลงข้อมูลตัวรวม
ขั้นตอนข้างต้นได้เลือกพอร์ตเดียวเป็น "จัดกลุ่มตาม" ซึ่งทำให้ผลรวมทั้งบริษัทกลายเป็นผลรวมต่อแผนก พอร์ตขาเข้า พอร์ตขาเข้า/ขาออก พอร์ตขาออก หรือพอร์ตตัวแปรใดๆ ก็สามารถทำเครื่องหมายได้ในลักษณะเดียวกัน
มีกฎสามข้อที่ควบคุมชุดผลลัพธ์:
- หนึ่งแถวต่อหนึ่งกลุ่ม เมื่อมีการจัดกลุ่มค่าต่างๆ บริการการผสานรวมจะสร้างแถวหนึ่งแถวสำหรับแต่ละชุดค่าผสมที่ไม่ซ้ำกันของการจัดกลุ่มตามพอร์ต
- ไม่มีการจัดกลุ่มตาม มีเพียงแถวเดียว หากไม่มีการระบุพอร์ต ระบบจะถือว่าข้อมูลทั้งหมดเป็นกลุ่มเดียว และจะส่งคืนแถวเดียวสำหรับข้อมูลทุกแถว
- แถวสุดท้ายเป็นผู้ชนะ นอกเหนือจากผลลัพธ์โดยรวมแล้ว บริการการรวมข้อมูลมักจะส่งผ่านแถวสุดท้ายที่ได้รับในกลุ่ม เว้นแต่ว่าฟังก์ชัน เช่น FIRST จะระบุชื่อแถวอื่น
ในกรณีที่มีการทำเครื่องหมายท่าเรือหลายแห่ง ลำดับของท่าเรือจะเป็นตัวกำหนดกลุ่มping ลำดับ และลำดับนั้นสามารถเปลี่ยนแปลงผลลัพธ์ได้ กลุ่มping โดย DEPTNO แล้ว JOB ไม่เหมือนกับกลุ่มping โดยเรียงลำดับตาม JOB แล้วตามด้วย DEPTNO เนื่องจากค่าในคอลัมน์ที่สองไม่จำเป็นต้องเป็นค่าที่ไม่ซ้ำกันเสมอไป
คุณสมบัติการแปลงตัวรวม
แท็บ Properties ในหน้าต่าง Edit Transformations จะมีค่าการตั้งค่าที่กำหนดว่าแคชจะจัดเก็บอยู่ที่ใดและใช้ไปเท่าใด ตารางด้านล่างแสดงรายการการตั้งค่าเหล่านั้น
| การตั้งค่า | สิ่งที่มันควบคุม |
|---|---|
| ไดเร็กทอรีแคช | ไดเร็กทอรีภายในเครื่องที่ Integration Service สร้างไฟล์ดัชนีและแคชข้อมูล โดยค่าเริ่มต้นคือตัวแปรกระบวนการ $PMCacheDir ที่ตั้งค่าไว้ใน Workflow Manager |
| Tracระดับ | ปริมาณรายละเอียดที่เขียนลงในบันทึกเซสชันสำหรับการแปลงข้อมูลนี้ |
| ข้อมูลที่เรียงลำดับแล้ว | ระบุว่าข้อมูลขาเข้าได้รับการจัดเรียงตามกลุ่มพอร์ตแล้ว เลือกตัวเลือกนี้เฉพาะเมื่อแผนที่ping ให้ข้อมูลที่เรียงลำดับอย่างถูกต้องจริงๆ |
| ขนาดแคชข้อมูลตัวรวม | ขนาดของแคชข้อมูล ค่าเริ่มต้นคือ 2,000,000 ไบต์ และตัวเลือก "อัตโนมัติ" จะปล่อยให้ Integration Service กำหนดขนาดเอง |
| ขนาดแคชดัชนีตัวรวม | ขนาดของแคชดัชนี ค่าเริ่มต้นคือ 1,000,000 ไบต์ และตัวเลือก "อัตโนมัติ" จะปล่อยให้ Integration Service กำหนดขนาดเอง |
| ขอบเขตการเปลี่ยนแปลง | ใช้ตรรกะกับแต่ละธุรกรรม หรือกับข้อมูลขาเข้าทั้งหมด ตัวเลือก "ข้อมูลขาเข้าทั้งหมด" จะยกเลิกขอบเขตของธุรกรรมขาเข้า |
เมื่อเปิดใช้งานการรวมข้อมูลแบบเพิ่มทีละน้อย บริการการรวมข้อมูลจะเขียนสำเนาสำรองของไฟล์แคชทุกครั้งที่เรียกใช้งาน ดังนั้นไดเร็กทอรีแคชจึงต้องเก็บไฟล์สองชุดแทนที่จะเป็นชุดเดียว
กฎการใช้การแสดงออกเชิงรวมและเคล็ดลับด้านประสิทธิภาพ
นิพจน์รวมอาจรวมฟังก์ชันรวมกับข้อความเงื่อนไขและฟังก์ชันที่ไม่ใช่ฟังก์ชันรวม ซึ่งทำให้สามารถคำนวณผลรวมและจำนวนแบบมีเงื่อนไขได้ภายในพอร์ตเดียว มีกฎสองข้อที่จำกัดสิ่งที่สามารถเขียนได้
- มีชั้นการซ้อนกันเพียงชั้นเดียว สามารถใช้ฟังก์ชันรวมได้เพียงฟังก์ชันเดียวซ้อนอยู่ภายในฟังก์ชันรวมอื่น และจะประเมินนิพจน์ภายในก่อน
- ไม่มีการผสม การแปลงข้อมูลอาจประกอบด้วยฟังก์ชันระดับเดียวหรือฟังก์ชันซ้อนกัน แต่ไม่สามารถมีทั้งสองอย่างพร้อมกันได้ หากมีทั้งสองอย่างพร้อมกัน โปรแกรมออกแบบจะทำเครื่องหมายที่แผนที่นั้นping ไม่ถูกต้อง ดังนั้นให้แยกตรรกะออกเป็นสองส่วนสำหรับการแปลง Aggregator
ในส่วนของการปรับแต่งนั้น การตั้งค่าหลักๆ มีสามอย่าง:
- ข้อมูลที่ป้อนเข้ามาได้รับการจัดเรียงแล้ว เมื่อข้อมูลถูกจัดเรียงตามกลุ่มพอร์ตแล้ว แต่ละกลุ่มสามารถถูกปล่อยได้ทันทีที่ข้อมูลแถวสุดท้ายมาถึง ดังนั้นจึงมีการแคชข้อมูลน้อยลงและทำให้เซสชันทำงานได้เร็วขึ้น ข้อมูลที่จัดเรียงแล้วไม่สามารถใช้ร่วมกับการรวมข้อมูลแบบเพิ่มทีละน้อยได้
- การรวมข้อมูลแบบเพิ่มขึ้นทีละน้อย แถวข้อมูลใหม่จะถูกส่งผ่านแผนที่ping และเมื่อรวมกับแคชข้อมูลในอดีต แทนที่จะคำนวณประวัติใหม่ ซึ่งเหมาะสมกับการโหลดข้อมูลในแต่ละคืนลงในผลรวมสะสม
- กรองข้อมูลตั้งแต่เนิ่นๆ ควรลบแถวที่ไม่ส่งผลต่อผลรวมออกก่อนที่จะใช้ Aggregator ไม่ว่าจะในแบบสอบถาม Source Qualifier หรือใน... การแปลงตัวกรองเนื่องจากทุกแถวที่ส่งไปยัง Aggregator จะใช้หน่วยความจำแคช นี่เป็นหนึ่งในขั้นตอนการตรวจสอบมาตรฐานระหว่างการประมวลผล การปรับแต่งประสิทธิภาพ.







