28 January 2009

DataStage: Aggregate Method in Aggregator Stage

Data Stage มี Mode ในการทำงานโดยขึ้นอยู่กับจำนวนกลุ่ม Output ของ Data และ จำนวน Memory เลือกใช้ Hash Mode ก็ต่อเมื่อมีจำนวนกลุ่มของข้อมูลไม่มาก โดยทั่วไปประมาณ 1000 กลุ่มต่อเมกะไบท์

กรณีถ้ามีจำนวนกลุ่มของข้อมูลปริมาณมาก ซึ่งเกิดขึ้นได้ในกรณีที่มี Grouping Key จำนวนมาก หรือ Grouping Key เก็บข้อมูลที่มีค่ามาก ควรจะใช้ Sort Mode ซึ่ง Sort Mode ต้องใช้ Partition แบบ Sort สำหรับ Input Data Set โดยกำหนดที่ Grouping Key ที่ต้องการ Sort โดยหลังจาก Sort ข้อมูลที่ Group เรียบร้อยแล้วจะถูกเก็บอยู่ใน Partition เดียวกัน

ปกติ Data Stage จะกำหนด Method Property เป็น Hash
สามารถกำหนด Method ได้ดังรูป โดย ไปที่ Stage Tab ของ Aggregator Stage เลือก Property Tab เลือก Option แล้ว Click ที่ Method เลือกค่า Hash หรือ Sort จาก List Box




กรณีที่มี กลุ่มข้อมูลจำนวนมาก แต่กำหนด Mode เป็น Hash จะทำให้ Data Stage แล้ง Error Log ดังนี้
agg_Sum_CRN_BAL: When checking operator: When binding output interface field "SUM_CRN_BAL" to field "SUM_CRN_BAL": Implicit conversion from source type "dfloat" to result type "decimal[16,2]": Possible range/precision limitation.
agg_Sum_CRN_BAL,0: Hash table has grown to 16384 entries.
agg_Sum_CRN_BAL,1: Hash table has grown to 16384 entries.
agg_Sum_CRN_BAL,2: Hash table has grown to 16384 entries.
agg_Sum_CRN_BAL,3: Hash table has grown to 16384 entries.
agg_Sum_CRN_BAL,0: Hash table has grown to 32768 entries.
agg_Sum_CRN_BAL,1: Hash table has grown to 32768 entries.
agg_Sum_CRN_BAL,2: Hash table has grown to 32768 entries.
agg_Sum_CRN_BAL,3: Hash table has grown to 32768 entries.

No comments: