การเปลี่ยนแปลงอันดับใน Informatica ด้วยตัวอย่าง

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

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

  • 🥇 ด้านบนหรือด้านล่าง N: คุณสมบัติ Top/Bottom และคุณสมบัติ Number of Ranks จะร่วมกันตัดสินว่าแถวใดบ้างที่จะผ่านการกรอง
  • 🗂️ การจัดอันดับตามกลุ่ม: การจัดกลุ่มตามท่าเรือจะเริ่มต้นการจัดอันดับใหม่สำหรับทุกกลุ่ม ดังนั้นแต่ละแผนกจึงสามารถแสดงผลสามอันดับแรกของตนเองได้
  • 🔢 ลำดับพอร์ต: มีเพียงพอร์ตเดียวเท่านั้นที่มีแฟล็ก R และคอลัมน์เดียวนั้นคือค่าที่ใช้ในการคำนวณอันดับ
  • 📍 ดัชนีอันดับ: โปรแกรมออกแบบจะเพิ่มพอร์ตเอาต์พุตนี้โดยอัตโนมัติเพื่อกำหนดตำแหน่งของแต่ละแถวภายในกลุ่ม
  • 🧪 ตัวอย่างการทำงาน: แผนที่แปดping ขั้นตอนการออกแบบจะโหลดพนักงานที่ได้รับค่าตอบแทนสูงสุดสามคนต่อแผนกเข้าไปในตัวแปร EMP_TARGET
  • 💾 แคชและพร้อมใช้งาน: ค่ากลุ่มและข้อมูลแถวจะถูกเก็บไว้ในดัชนีและแคชข้อมูล และจำนวนแถวจะเปลี่ยนแปลงไป

การเปลี่ยนแปลงอันดับใน Informatica

การแปลงอันดับคืออะไร?

การแปลงลำดับ (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 ขณะนี้คำจำกัดความทั้งสองปรากฏอยู่บนผืนผ้าใบแล้ว ดังแสดงในภาพด้านล่าง

แผนที่แสดงที่ตั้งบริษัทping นักออกแบบแสดงคำจำกัดความแหล่งที่มาของ EMP และคำจำกัดความเป้าหมาย EMP_TARGET

ขั้นตอน 2) จากนั้นในแผนที่ping

  1. เลือกเมนูการแปลง
  2. เลือกตัวเลือกสร้าง

ถัดไปจะแสดงเมนูการแปลงข้อมูลพร้อมตัวเลือกสร้าง

เมนูการแปลงเปิดขึ้นในแผนที่ping นักออกแบบที่เลือกตัวเลือก "สร้าง"

ขั้นตอน 3) ในหน้าต่างสร้างการเปลี่ยนแปลง

  1. เลือกการแปลงอันดับ
  2. ป้อนชื่อการเปลี่ยนแปลง “rnk_salary”
  3. เลือกปุ่มสร้าง

สร้างหน้าต่าง Transformation โดยเลือก Rank และป้อนชื่อ rnk_salary

ขั้นตอน 4) การแปลงอันดับจะถูกสร้างขึ้นในแผนที่pingเลือกปุ่ม "เสร็จสิ้น" ในหน้าต่าง ตอนนี้อ็อบเจ็กต์ rnk_salary ที่ว่างเปล่าจะปรากฏบนผืนผ้าใบแล้ว

การแปลงลำดับ rnk_salary ถูกสร้างขึ้นและวางไว้บนแผนที่ping ผ้าใบ

ขั้นตอน 5) เชื่อมต่อพอร์ตทั้งหมดจาก ตัวระบุแหล่งที่มา ไปยังการแปลงลำดับ เพื่อให้คอลัมน์พนักงานทุกคอลัมน์สามารถนำไปจัดอันดับได้

พอร์ต Source Qualifier ทั้งหมดที่เชื่อมโยงเข้ากับการแปลงอันดับ rnk_salary

ขั้นตอน 6) Double คลิกที่การแปลงอันดับ (Rank transformation) แล้วหน้าต่าง "แก้ไขการแปลง" (edit transformation) จะเปิดขึ้น ในหน้าต่างนี้

  1. เลือกเมนูคุณสมบัติ
  2. เลือกตัวเลือก "ด้านบน" จากคุณสมบัติด้านบน/ล่าง
  3. ป้อน 3 ในจำนวนอันดับ

แท็บ Properties ตอนนี้แสดงคำว่า Top พร้อมอันดับสามระดับ ดังที่แสดงในภาพหน้าจอ

แท็บคุณสมบัติของการแปลงอันดับ โดยเลือก "สูงสุด" และป้อนเลขสามเป็นจำนวนอันดับ

ขั้นตอน 7) ในหน้าต่าง "แก้ไขการเปลี่ยนแปลง" อีกครั้ง

  1. เลือกแท็บพอร์ต
  2. เลือกกลุ่มตามตัวเลือกสำหรับคอลัมน์หมายเลขแผนก
  3. เลือกอันดับในคอลัมน์เงินเดือน
  4. เลือกปุ่มตกลง

ขณะนี้แท็บ "ท่าเรือ" แสดงธงกลุ่มบนหมายเลขแผนก และธง "R" บนเงินเดือน

แท็บ Ports ของการแปลง Rank โดยตั้งค่า Group By ตามหมายเลขแผนกและตั้งค่า Rank ตามคอลัมน์เงินเดือน

ขั้นตอน 8) เชื่อมต่อพอร์ตจากการแปลงอันดับไปยังตารางเป้าหมาย แผนที่ping ตอนนี้รันจาก EMP ผ่าน rnk_salary ไปยัง EMP_TARGET แล้ว

พอร์ตที่จัดอันดับซึ่งเชื่อมโยงจากการแปลงอันดับ rnk_salary ไปยังตาราง EMP_TARGET

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

คุณสมบัติการแปลงลำดับ

แท็บ Properties ที่ใช้ในขั้นตอนที่ 6 มีการตั้งค่ามากกว่าสองอย่างที่ตัวอย่างเปลี่ยนแปลง การตั้งค่าด้านล่างนี้ควบคุมจำนวนแถวที่จะคงอยู่ วิธีการเปรียบเทียบสตริง และตำแหน่งที่ไฟล์แคชจะถูกเขียนลงไป

อสังหาริมทรัพย์ สิ่งที่มันควบคุม
บน / ล่าง จะใช้ค่าสูงสุดหรือค่าต่ำสุดในการจัดอันดับคอลัมน์ ตัวอย่างนี้ใช้ค่าสูงสุด (Top)
จำนวนยศ แต่ละกลุ่มจะแสดงจำนวนแถวเท่าใด ตัวอย่างนี้ใช้ 3 แถว ดังนั้นแต่ละแผนกจะแสดงพนักงานสามคน
การเปรียบเทียบสตริงแบบคำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก การเปรียบเทียบสตริงจะคำนึงถึงตัวพิมพ์ใหญ่-เล็กขณะจัดอันดับหรือไม่ เรื่องนี้สำคัญเฉพาะเมื่อพอร์ตการจัดอันดับมีข้อความอยู่เท่านั้น
ไดเร็กทอรีแคช ไดเร็กทอรีที่ใช้สร้างไฟล์ดัชนีและแคชข้อมูล โดยค่าเริ่มต้นคือตัวแปรกระบวนการ $PMCacheDir
ขนาดแคชข้อมูลอันดับ ขนาดของแคชข้อมูลที่เก็บข้อมูลแถว ค่าเริ่มต้นคือ อัตโนมัติ ซึ่งจะปล่อยให้ Integration Service กำหนดขนาดเอง
ขนาดแคชดัชนีลำดับ ขนาดของแคชดัชนีที่เก็บค่ากลุ่ม ค่าเริ่มต้นคือ อัตโนมัติ
ขอบเขตการเปลี่ยนแปลง ใช้การจัดอันดับกับแต่ละธุรกรรมหรือกับข้อมูลขาเข้าทั้งหมด
Tracระดับ ระดับรายละเอียดที่บันทึกในบันทึกเซสชัน: กระชับ, ปกติ, การเริ่มต้นแบบละเอียด หรือ ข้อมูลแบบละเอียด

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

การแปลงลำดับเทียบกับการแปลงตัวรวม

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

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

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

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

ไม่ Rank เชื่อมต่ออยู่เท่านั้น ดังนั้นจึงต้องอยู่ในกระแสข้อมูลระหว่างสองอ็อบเจ็กต์ พอร์ต RANKINDEX อาจปล่อยว่างไว้ได้ แต่การแปลงข้อมูลนั้นไม่สามารถเรียกใช้ในลักษณะเดียวกับการเรียกใช้ Lookup ที่ไม่ได้เชื่อมต่อได้

แถวที่มีค่าเท่ากันจะได้รับค่าเดียวกันในดัชนีลำดับ และการแปลงจะข้ามค่าถัดไป ดังนั้น พนักงานสองคนที่ได้อันดับสองร่วมกันจึงแสดงค่า 2 เหมือนกัน และแถวถัดไปจะแสดงค่า 4 แทนที่จะเป็น 3

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

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

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

A SQL ฟังก์ชัน Window จะติดป้ายกำกับให้กับทุกแถวและปล่อยให้การกรองเป็นหน้าที่ของคิวรีภายนอก การแปลงข้อมูลของ Informatica จะติดป้ายกำกับและกรองข้อมูลในขั้นตอนเดียว และใช้งานได้กับไฟล์แบบเรียบและแหล่งข้อมูลที่ไม่ใช่เชิงสัมพันธ์อื่นๆ ที่ไม่มีเอนจินฐานข้อมูลให้ใช้งาน

โมเดลการเรียนรู้ของเครื่องจะให้คะแนนบันทึกตามความน่าจะเป็นของการเลิกใช้บริการ การฉ้อโกง หรือการเปลี่ยนใจใช้บริการ และคะแนนนั้นจะกลายเป็นคอลัมน์จัดอันดับ ที่ปรึกษา AI ยังวิเคราะห์ขนาดของกลุ่มด้วย ดังนั้นการตั้งค่าแคชและจำนวนอันดับจึงถูกเลือกจากข้อมูลจริงแทนที่จะเป็นการคาดเดา

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

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