ต้องการอ่าน sequential file หลายๆ ไฟล์ภายใน job เดียว โดยให้มีชื่อ file แปะไว้เป็น column สุดท้ายของแต่ละ record
ตัวอย่างข้อมูล
$ ls –l /tmp/z*.txt
-rw-r--r-- 1 etluser dstage 12 May 23 17:15 z1.txt
-rw-r--r-- 1 etluser dstage 15 May 23 17:15 z2.txt
$ cat /tmp/z*.txt
z1
z1
z2
z2
z2
ตัวอย่างผลลัพธ์ที่ต้องการ
z1,/tmp/z1.txt
z1,/tmp/z1.txt
z2,/tmp/z2.txt
z2,/tmp/z2.txt
z2,/tmp/z2.txt
วิธีทำ
1. กำหนด Properties ของ Sequential File Stage / Output / Properties ดังนี้
- Source/Read Method = File Pattern
- Source/File Pattern = /tmp/z*.txt
- Options/File Name Column = fileNameColumn
2. ใน Column ที่ชื่อว่า fileNameColumn จะเก็บชื่อไฟล์ไว้ เพราะฉะนั้นให้ลากมันไปออกที่ data set ใน mapping ของ Copy Stage ด้วย
3. เพิ่ม environment variable ชื่อ $APT_IMPORT_PATTERN_USES_FILESET ลงไปใน job parameter และกำหนดค่าตอน run time
- กำหนดให้เป็น False (Default value) จะได้ค่า /tmp/z*.txt ออกมาใน output file
- กำหนดให้เป็น True จะได้ค่า /tmp/z1.txt หรือ /tmp/z2.txt ตามที่มาของข้อมูลจริงๆ
DataStage Release: 7.5.x
Job Type: Parallel
OS: Unix
No comments:
Post a Comment