การแปลงตัวรวบรวมใน Informatica พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🧮 การคำนวณแบบกลุ่ม: การจัดกลุ่มตามพอร์ตจะกำหนดกลุ่มต่างๆ และบริการการรวมระบบจะส่งคืนข้อมูลหนึ่งแถวสำหรับทุกชุดค่าผสมที่ไม่ซ้ำกัน
  • 💾 สองแคช: ค่ากลุ่มจะถูกเก็บไว้ในแคชดัชนี ในขณะที่ข้อมูลแถวจะถูกเก็บไว้ในแคชข้อมูล
  • 🧪 ตัวอย่างการทำงาน: นิพจน์ sum(SAL) ที่จัดกลุ่มตาม DEPTNO จะโหลดผลรวมของแผนกต่างๆ ลงใน SUM_SAL_DEPTWISE
  • 🔀 ข้อมูลที่เรียงลำดับแล้ว: การจัดเรียงกลุ่มล่วงหน้าตามพอร์ตช่วยให้บริการการรวมระบบสามารถปล่อยแต่ละกลุ่มได้เร็วขึ้นและแคชข้อมูลน้อยลงมาก
  • 📈 การทดลองแบบเพิ่มทีละขั้น: การรวมข้อมูลแบบเพิ่มทีละน้อยจะนำแคชข้อมูลในอดีตกลับมาใช้ใหม่ ดังนั้นจึงมีการคำนวณเฉพาะแถวข้อมูลใหม่เท่านั้น
  • ???? ขีดจำกัดการซ้อน: การแปลงข้อมูลเพียงครั้งเดียวอาจประกอบด้วยฟังก์ชันระดับเดียวหรือฟังก์ชันซ้อนกัน แต่ไม่สามารถประกอบด้วยทั้งสองอย่างพร้อมกันได้

การเปลี่ยนแปลงของผู้รวบรวมใน 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 นักออกแบบ ดังนั้นเราจึงต้องการ

  1. นำเข้าตารางเป้าหมาย “sum_sal_deptwise” ลงในแผนที่ping.
  2. นำเข้าตารางต้นฉบับ “emp”

คำจำกัดความทั้งสองปรากฏบนผืนผ้าใบแล้ว ดังที่แสดงด้านล่าง

แผนที่แสดงที่ตั้งบริษัทping นักออกแบบที่มีแหล่งข้อมูล EMP, SQ_EMP และเป้าหมาย SUM_SAL_DEPTWISE ที่นำเข้า

ขั้นตอน 3) ในแผนที่ping,

  1. จาก แหล่งที่มารอบคัดเลือกลบคอลัมน์ empno, ename, job, mgr, hiredate และ comm ออก เหลือไว้เพียงคอลัมน์ deptno และ sal เท่านั้น
  2. สร้างการแปลงข้อมูลแบบ Aggregator ใหม่โดยใช้เมนูในกล่องเครื่องมือตามที่แสดงในภาพหน้าจอ เมื่อคุณคลิกไอคอน Aggregator การแปลงข้อมูลแบบ Aggregator ใหม่จะถูกสร้างขึ้น

อ็อบเจ็กต์ AGGTRANS ใหม่จะปรากฏขึ้นข้างๆ Source Qualifier ที่ถูกตัดแต่งแล้ว

ไอคอน Aggregator บนแถบเครื่องมือสร้าง AGGTRANS ถัดจาก SQ_EMP ที่ถูกตัดแต่ง

ขั้นตอน 4) ลากและวางคอลัมน์ SAL และ DEPTNO จาก Source Qualifier (SQ_EMP) ไปยังการแปลง Aggregator ตอนนี้พอร์ตทั้งสองเชื่อมโยงเข้ากับ AGGTRANS แล้ว

พอร์ต SAL และ DEPTNO ถูกลากจาก SQ_EMP เข้าสู่การแปลงข้อมูล Aggregator ของ AGGTRANS

ขั้นตอน 5) Double-คลิกที่การแปลง Aggregator เพื่อเปิดคุณสมบัติ จากนั้น

  1. เพิ่มพอร์ตใหม่ในการเปลี่ยนแปลง
  2. เปลี่ยนชื่อพอร์ตเป็น SUM_SAL
  3. เปลี่ยนชนิดข้อมูลของพอร์ตใหม่นี้เป็นสองเท่า
  4. กำหนดให้พอร์ตนี้เป็นพอร์ตเอาต์พุตโดยการเลือกช่องทำเครื่องหมายของพอร์ตเอาต์พุต
  5. คลิกตัวเลือกนิพจน์

แท็บ Ports ตอนนี้แสดงรายการ SAL, DEPTNO และพอร์ตเอาต์พุตใหม่ SUM_SAL แล้ว

แท็บ Ports ของ AGGTRANS โดยตั้งค่าพอร์ตเอาต์พุต SUM_SAL ใหม่เป็นชนิดข้อมูล double

ขั้นตอน 6) ในหน้าต่างตัวแก้ไขนิพจน์

  1. เพิ่มนิพจน์ sum(SAL); คุณต้องเขียนนิพจน์นี้ด้วยตนเอง
  2. กดปุ่ม OK เพื่อเปิดหน้าต่างแก้ไขการแปลง (Edit Transformations) อีกครั้ง

ตัวแก้ไขนิพจน์จะแสดงนิพจน์รวมที่กำหนดให้กับ SUM_SAL

ตัวแก้ไขนิพจน์สำหรับพอร์ต SUM_SAL ที่เก็บนิพจน์ผลรวม sum(SAL)

ขั้นตอน 7) ในหน้าต่างแก้ไขการแปลงข้อมูล ให้เลือกตัวเลือก “จัดกลุ่มตาม” โดยทำเครื่องหมายในช่องสี่เหลี่ยมหน้าคอลัมน์ deptno แล้วคลิก ตกลง การเลือกจัดกลุ่มตาม deptno จะเป็นการสั่งให้ Informatica จัดกลุ่มเงินเดือนตาม deptno

แท็บพอร์ต โดยเลือกช่องทำเครื่องหมาย GroupBy ไว้ที่พอร์ต DEPTNO

ขั้นตอน 8) เชื่อมโยงคอลัมน์ deptno และ sum_sal จากการแปลง Aggregator ไปยังตารางเป้าหมาย แผนที่นี้สร้างขึ้นเพื่อเชื่อมโยงคอลัมน์ deptno และ sum_sal เข้าด้วยกันping กระบวนการจึงเสร็จสมบูรณ์ตั้งแต่ต้นทางจนถึงปลายทาง

DEPTNO และ SUM_SAL เชื่อมโยงจาก AGGTRANS ไปยังคำจำกัดความเป้าหมาย SUM_SAL_DEPTWISE

ตอนนี้บันทึกแผนที่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 จะใช้หน่วยความจำแคช นี่เป็นหนึ่งในขั้นตอนการตรวจสอบมาตรฐานระหว่างการประมวลผล การปรับแต่งประสิทธิภาพ.

คำถามที่พบบ่อย

กลุ่มผลิตภัณฑ์โดยรวมครอบคลุมถึง AVGประกอบด้วยฟังก์ชัน COUNT, FIRST, LAST, MAX, MEDIAN, MIN, PERCENTILE, STDDEV, SUM และ VARIANCE โดยแต่ละฟังก์ชันจะส่งคืนค่าสรุปสำหรับค่าที่ไม่เป็นค่าว่างในพอร์ตที่เลือก

ข้อมูลทั้งหมดจะถูกประมวลผลเป็นกลุ่มเดียว ดังนั้นจึงได้ผลลัพธ์เป็นแถวเดียวสำหรับข้อมูลทุกแถว แถวนั้นจะแสดงผลรวมพร้อมกับแถวสุดท้ายที่การแปลงได้รับ

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

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

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

เข้าไปในไดเร็กทอรีที่ระบุโดยการตั้งค่า Cache Directory ซึ่งโดยค่าเริ่มต้นจะเป็นตัวแปรกระบวนการ $PMCacheDir ที่กำหนดค่าไว้ใน Workflow Manager ตรวจสอบให้แน่ใจว่าไดเร็กทอรีนั้นมีอยู่จริงและมีพื้นที่ว่างในดิสก์เพียงพอ

ผู้ช่วย AI จะวิเคราะห์ข้อมูลต้นทางและประวัติการทำงานเพื่อแนะนำว่ายอดรวมควรอยู่ในกลุ่มใด และควรจัดอยู่ในกลุ่มใดping คีย์มีความสำคัญ และการคำนวณในฐานข้อมูลจะประหยัดกว่า ระบบให้คำปรึกษาที่ใช้การเรียนรู้ของเครื่องจะจัดอันดับตัวเลือกต่างๆ และวิศวกรจะเป็นผู้ตรวจสอบอนุมัติ

Copilot สร้างนิพจน์และคำสั่ง SQL ที่เกี่ยวข้องได้อย่างรวดเร็ว ซึ่งช่วยประหยัดเวลาในการทำงานซ้ำซากเกี่ยวกับพอร์ต อย่างไรก็ตาม โปรแกรมไม่สามารถมองเห็นขนาดแคชหรือลำดับพอร์ตของคุณได้ ดังนั้น โปรดตรวจสอบความถูกต้องของทุกข้อเสนอแนะใน Expression Editor ก่อนบันทึก

สรุปโพสต์นี้ด้วย: