การเปลี่ยนแปลงอันดับใน Informatica ด้วยตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การแปลงลำดับใน Informatica เป็นออบเจ็กต์แบบแอคทีฟที่เชื่อมต่อกัน ซึ่งจะเก็บเฉพาะแถวบนสุดหรือล่างสุด N แถวของแต่ละกลุ่ม โดยกำหนดตำแหน่งให้กับแต่ละแถวที่เหลืออยู่ผ่านพอร์ตเอาต์พุต RANKINDEX อัตโนมัติ
การแปลงอันดับคืออะไร?
การแปลงลำดับ (Rank transformation) เป็นการแปลงข้อมูลแบบแอคทีฟและเชื่อมโยงกัน ซึ่งทำการกรองข้อมูลโดยอิงจากกลุ่มและลำดับ ตัวอย่างเช่น หากคุณต้องการได้ข้อมูลพนักงาน 10 คนที่มีเงินเดือนสูงสุด คุณสามารถกรองข้อมูลได้โดยใช้การแปลงลำดับ
การแปลงอันดับยังให้คุณสมบัติในการจัดอันดับตามกลุ่มอีกด้วย ตัวอย่างเช่น หากคุณต้องการได้พนักงานที่มีเงินเดือนสูงสุดสิบอันดับแรกในแต่ละแผนก คุณสามารถใช้กลุ่มนั้นได้ping สามารถทำได้ด้วยการแปลงนี้
การแปลงอันดับเป็นการเปลี่ยนแปลงที่ใช้งานอยู่ เนื่องจากจะส่งผลต่อจำนวนแถวเอาต์พุต
การแปลงลำดับ (Rank transformation) มีพอร์ตเอาต์พุตที่ใช้กำหนดลำดับให้กับแถว พอร์ตนั้นชื่อว่า RANKINDEX และ Designer จะสร้างพอร์ตนี้โดยอัตโนมัติทันทีที่เพิ่มการแปลงลำดับเข้าไป แผนที่ping.
เนื่องจากการจัดอันดับต้องเปรียบเทียบทุกแถวในกลุ่มก่อนที่จะตัดสินว่าแถวใดชนะ บริการบูรณาการจึงแคชข้อมูลที่เข้ามา ค่ากลุ่มจะถูกเก็บไว้ในแคชดัชนี และข้อมูลแถวที่เหลือจะถูกเก็บไว้ในแคชข้อมูล ในลักษณะเดียวกับที่แคชไว้ การเปลี่ยนแปลงของช่างไม้ ถือครองท่อส่งหลัก
พอร์ตในการแปลงลำดับ
ก่อนที่จะดูตัวอย่างการใช้งานจริง การรู้ว่าแต่ละแฟล็กพอร์ตในแท็บ Ports ทำหน้าที่อะไรนั้นจะเป็นประโยชน์ เพราะมีสองแฟล็กที่สำคัญในการแปลงข้อมูลนี้
| พอร์ตประเภท | สิ่งที่มันไม่ |
|---|---|
| อินพุต (I) | รับคอลัมน์จากกระบวนการแปลงข้อมูลต้นทาง คอลัมน์ทุกคอลัมน์ที่เชื่อมโยงเข้ากับกระบวนการแปลงข้อมูล Rank ถือเป็นพอร์ตอินพุต |
| เอาต์พุต (O) | ส่งต่อคอลัมน์ไปยังการแปลงครั้งถัดไปหรือไปยังเป้าหมาย |
| ตัวแปร (V) | มีการคำนวณเฉพาะที่อยู่ภายในกระบวนการแปลง เช่นเดียวกับการแปลงนิพจน์ |
| อันดับ (R) | เครื่องหมายนี้ระบุคอลัมน์ที่ใช้ในการคำนวณอันดับ มีเพียงพอร์ตเดียวในการแปลงข้อมูลเท่านั้นที่สามารถใช้เครื่องหมายนี้ได้ |
| จัดกลุ่มตาม | ฟังก์ชันนี้จะเริ่มต้นการจัดอันดับใหม่สำหรับทุกค่าที่ไม่ซ้ำกัน ดังนั้นตัวกรองสามอันดับแรกจะส่งคืนสามแถวต่อกลุ่ม แทนที่จะเป็นสามแถวโดยรวม |
| ดัชนีอันดับ | พอร์ตส่งออกอย่างเดียวที่สร้างโดย Designer พอร์ตนี้จะเก็บค่าลำดับของแต่ละแถวภายในกลุ่ม และสามารถปล่อยว่างไว้ได้ |
การจัดอันดับสามารถทำได้ที่ท่าเรือเดียวเท่านั้น ดังนั้นข้อกำหนดเช่น "เงินเดือนสูงสุด จากนั้นระยะเวลาการทำงาน" จึงจำเป็นต้องมีการกำหนดค่าตัดสินในกรณีที่คะแนนเท่ากันไว้ล่วงหน้า ไม่ใช่ท่าเรือลำดับที่สอง
วิธีใช้งานการแปลงลำดับ (Rank Transformation) ใน Informatica
ความต้องการของเราคือการโหลดข้อมูลพนักงานที่มีเงินเดือนสูงสุด 3 อันดับแรกของแต่ละแผนก โดยเราจะใช้วิธีการแปลงลำดับ (Rank transformation) ในการดำเนินการนี้ โปรดทำตามขั้นตอนทั้งแปดขั้นตอนด้านล่างในแผนผัง (Map)ping นักออกแบบ
ขั้นตอน 1) สร้างแผนที่ping โดยมีแหล่งที่มาเป็น EMP และเป้าหมายเป็น EMP_TARGET ขณะนี้คำจำกัดความทั้งสองปรากฏอยู่บนผืนผ้าใบแล้ว ดังแสดงในภาพด้านล่าง
ขั้นตอน 2) จากนั้นในแผนที่ping
- เลือกเมนูการแปลง
- เลือกตัวเลือกสร้าง
ถัดไปจะแสดงเมนูการแปลงข้อมูลพร้อมตัวเลือกสร้าง
ขั้นตอน 3) ในหน้าต่างสร้างการเปลี่ยนแปลง
- เลือกการแปลงอันดับ
- ป้อนชื่อการเปลี่ยนแปลง “rnk_salary”
- เลือกปุ่มสร้าง
ขั้นตอน 4) การแปลงอันดับจะถูกสร้างขึ้นในแผนที่pingเลือกปุ่ม "เสร็จสิ้น" ในหน้าต่าง ตอนนี้อ็อบเจ็กต์ rnk_salary ที่ว่างเปล่าจะปรากฏบนผืนผ้าใบแล้ว
ขั้นตอน 5) เชื่อมต่อพอร์ตทั้งหมดจาก ตัวระบุแหล่งที่มา ไปยังการแปลงลำดับ เพื่อให้คอลัมน์พนักงานทุกคอลัมน์สามารถนำไปจัดอันดับได้
ขั้นตอน 6) Double คลิกที่การแปลงอันดับ (Rank transformation) แล้วหน้าต่าง "แก้ไขการแปลง" (edit transformation) จะเปิดขึ้น ในหน้าต่างนี้
- เลือกเมนูคุณสมบัติ
- เลือกตัวเลือก "ด้านบน" จากคุณสมบัติด้านบน/ล่าง
- ป้อน 3 ในจำนวนอันดับ
แท็บ Properties ตอนนี้แสดงคำว่า Top พร้อมอันดับสามระดับ ดังที่แสดงในภาพหน้าจอ
ขั้นตอน 7) ในหน้าต่าง "แก้ไขการเปลี่ยนแปลง" อีกครั้ง
- เลือกแท็บพอร์ต
- เลือกกลุ่มตามตัวเลือกสำหรับคอลัมน์หมายเลขแผนก
- เลือกอันดับในคอลัมน์เงินเดือน
- เลือกปุ่มตกลง
ขณะนี้แท็บ "ท่าเรือ" แสดงธงกลุ่มบนหมายเลขแผนก และธง "R" บนเงินเดือน
ขั้นตอน 8) เชื่อมต่อพอร์ตจากการแปลงอันดับไปยังตารางเป้าหมาย แผนที่ping ตอนนี้รันจาก EMP ผ่าน rnk_salary ไปยัง EMP_TARGET แล้ว
ตอนนี้ บันทึกแผนที่ping และเรียกใช้งานหลังจากสร้างเสร็จแล้ว เซสชั่น และ เวิร์กโฟลว์ตัวกรองแหล่งที่มาจะดึงข้อมูลทั้งหมด แต่การแปลงอันดับจะส่งผ่านเฉพาะข้อมูลที่มีเงินเดือนสูงสามอันดับแรกสำหรับแต่ละแผนกเท่านั้น
คุณสมบัติการแปลงลำดับ
แท็บ Properties ที่ใช้ในขั้นตอนที่ 6 มีการตั้งค่ามากกว่าสองอย่างที่ตัวอย่างเปลี่ยนแปลง การตั้งค่าด้านล่างนี้ควบคุมจำนวนแถวที่จะคงอยู่ วิธีการเปรียบเทียบสตริง และตำแหน่งที่ไฟล์แคชจะถูกเขียนลงไป
| อสังหาริมทรัพย์ | สิ่งที่มันควบคุม |
|---|---|
| บน / ล่าง | จะใช้ค่าสูงสุดหรือค่าต่ำสุดในการจัดอันดับคอลัมน์ ตัวอย่างนี้ใช้ค่าสูงสุด (Top) |
| จำนวนยศ | แต่ละกลุ่มจะแสดงจำนวนแถวเท่าใด ตัวอย่างนี้ใช้ 3 แถว ดังนั้นแต่ละแผนกจะแสดงพนักงานสามคน |
| การเปรียบเทียบสตริงแบบคำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก | การเปรียบเทียบสตริงจะคำนึงถึงตัวพิมพ์ใหญ่-เล็กขณะจัดอันดับหรือไม่ เรื่องนี้สำคัญเฉพาะเมื่อพอร์ตการจัดอันดับมีข้อความอยู่เท่านั้น |
| ไดเร็กทอรีแคช | ไดเร็กทอรีที่ใช้สร้างไฟล์ดัชนีและแคชข้อมูล โดยค่าเริ่มต้นคือตัวแปรกระบวนการ $PMCacheDir |
| ขนาดแคชข้อมูลอันดับ | ขนาดของแคชข้อมูลที่เก็บข้อมูลแถว ค่าเริ่มต้นคือ อัตโนมัติ ซึ่งจะปล่อยให้ Integration Service กำหนดขนาดเอง |
| ขนาดแคชดัชนีลำดับ | ขนาดของแคชดัชนีที่เก็บค่ากลุ่ม ค่าเริ่มต้นคือ อัตโนมัติ |
| ขอบเขตการเปลี่ยนแปลง | ใช้การจัดอันดับกับแต่ละธุรกรรมหรือกับข้อมูลขาเข้าทั้งหมด |
| Tracระดับ | ระดับรายละเอียดที่บันทึกในบันทึกเซสชัน: กระชับ, ปกติ, การเริ่มต้นแบบละเอียด หรือ ข้อมูลแบบละเอียด |
ขนาดแคชเป็นค่าที่ควรพิจารณาใหม่เมื่อใช้แหล่งข้อมูลขนาดใหญ่ เมื่อแคชมีขนาดเล็กเกินไป Integration Service จะจัดเก็บข้อมูลลงดิสก์ ซึ่งเป็นหนึ่งในสิ่งแรกๆ ที่ตรวจสอบระหว่างการทำงาน การปรับแต่งประสิทธิภาพ ของแผนที่ping.
การแปลงลำดับเทียบกับการแปลงตัวรวม
การแปลงข้อมูลทั้งสองแบบนั้นทำงานอยู่ ทั้งสองแบบจะแคชข้อมูลอินพุต และทั้งสองแบบจะมีพอร์ตสำหรับจัดกลุ่มข้อมูล (Group By) ดังนั้นจึงง่ายที่จะเลือกใช้ผิด ความแตกต่างอยู่ที่ผลลัพธ์ที่ได้จากการแปลงทั้งสองแบบ
| จุดเปรียบเทียบ | การแปลงลำดับ | การแปลงตัวรวม |
|---|---|---|
| จุดมุ่งหมาย | ส่งคืนแถวที่สมบูรณ์ N แถวบนสุดหรือล่างสุดของแต่ละกลุ่ม | ส่งคืนค่าที่คำนวณแล้ว เช่น ผลรวม AVGค่าสูงสุดหรือค่าต่ำสุดต่อกลุ่ม |
| แถวที่ส่งคืน | จนถึงจำนวนลำดับชั้นต่อกลุ่ม โดยที่คอลัมน์ทั้งหมดคงเดิม | โดยปกติจะมีแถวสรุปหนึ่งแถวต่อกลุ่ม |
| เพิ่มพอร์ตพิเศษ | RANKINDEX ซึ่งเก็บตำแหน่งของแต่ละแถว | ไม่มี |
| คอลัมน์จัดอันดับหรือรวม | พอร์ตหนึ่งถูกกำหนดให้เป็นพอร์ตจัดอันดับ | พอร์ตจำนวนใดก็ได้ที่รองรับนิพจน์รวม |
พูดให้เข้าใจง่ายๆ ก็คือ การแปลงตัวรวม การแปลงค่าแบบ Rank จะตอบคำถามว่า “เงินเดือนสูงสุดในแผนกนี้คือเท่าไหร่” ในขณะที่การแปลงค่าแบบ Rank จะตอบคำถามว่า “พนักงานคนไหนได้รับเงินเดือนนั้น” เมื่อต้องตัดข้อมูลเพียงบางส่วนออกตามเงื่อนไขง่ายๆ และไม่มีลำดับเกี่ยวข้อง การแปลงค่าแบบ Rank จะตอบคำถามว่า “พนักงานคนไหนได้รับเงินเดือนนั้น” การแปลงตัวกรอง เป็นตัวเลือกที่ประหยัดกว่า เพราะไม่จำเป็นต้องใช้แคชเลย









