21 October 2008

Environment Variable

Environment variable คืออะไร

Environment Variable คือตัวแปรกลางที่กำหนดขึ้นมาเพื่อให้เรียกใช้ได้ในทุกๆ job ของ project หรือ ทุกๆ job ใน server

ประโยชน์ของ Environment variable

เวลาแก้ค่า Default value ของมัน เราสามารถแก้แค่ที่เดียวมันก็ effect ทุก job ที่เรียกใช้มัน ไม่ต้องไปไล่ตามแก้ทุก job เช่น กรณีชื่อ user ทำที่ออฟฟิศเราใช้ etluser แต่พอไปที่กรมฯ เค้าใช้ etl01 เป็นต้น

สรุป ข้อดีของมันคือ แก้ค่า default value ใน DataStage Admin ที่เดียวพอ ไม่ต้องไปตามแก้ทุก job

การสร้าง Environment Variable

สามารถทำได้ 3 ทางคือ

1) ผ่านทาง DataStage Designer

 ds_envparam1

2) ผ่านทาง DataStage Admoinistrator

 ds_envparam2

ds_envparam3

ds_envparam4

3) Edit file DSParams

หลังจากที่ทำด้วยวิธีข้อ1 และ 2 แล้วไฟล์ /opt/IBM/InformationServer/Server/Projects/[Project Name]/DSParams จะถูก update ตามตัวอย่างนี้

**ส่วนนี้แสดงชื่อ variable, type, prompt

[EnvVarDefns]

TestEnvVar\User Defined\-1\String\\0\Project\Testing Environment Variable\

TestEnvVarDesigner\User Defined\-1\String\\0\Project\Create from Designer\

DB2INSTANCE\User Defined\-1\String\\0\Project\DB2 Instance Name\

**ส่วนนี้แสดง default value

[EnvVarValues]

"TestEnvVar"\1\"XYZ"

Special Value for Environment Variables
เมื่อเรารัน job เราสามารถกำหนดค่าให้ environment variable ได้เอง หรือใช้ค่าพิเศษ 3 ค่าคือ

  • $ENV เป็นการเรียกเอาค่าของตัวแปรดังกล่าวที่กำหนดไว้ใน dsenv ขึ้นมาใช้ ค่าตัวแปรนี้จึงสามารถใช้ได้ทั้ง server
  • $PROJDEF เป็นการเรียกเอาค่าของตัวแปรดังกล่าวที่กำหนดไว้ใน DSParams ขึ้นมาใช้ ค่าตัวแปรนี้จึงสามารถใช้ได้ทั้ง project การเปลี่ยนแปลงค่าสามารถทำได้ผ่าน Administrator และ job จะดึงค่าใหม่ไปใช้ทันทีโดยที่ไม่ต้อง compile job ใหม่
  • $UNSET เป็นการบังคับว่าเราไม่ต้องการ set ค่า environment variable นี้

การเรียกใช้ Environment variable ใน job

จาก DataStage Designer

  1. ไปที่ Job parameter > เวลาเรียกใช้ต้องมี $ นำหน้าชื่อตัวแปร
  2. กำหนด Default value = $PROJDEF
  3. เวลาเอาไปใช้ใน job ก็อ้างเหมือนปกติคือต้องมี # คร่อม

19 October 2008

DataStage: Set up DB2 Connection

DataStage สามารถ access DB2 ได้ 2 วิธีด้วยกัน คือ (1) ผ่าน ODBC และ (2) ผ่าน Native Connection ซึ่งวิธีที่ 2 จะให้ประสิทธิภาพที่ดีกว่า เพราะไม่ต้องผ่าน ODBC layer
วิธีการ setup ของแต่ละวิธีก็แตกต่างกันไป
วิธีที่ 1 ผ่าน ODBC
1. เพิ่ม DSN ลงไปใน /opt/Ascential/DataStage/DSEngine/.odbc.ini โดยการ copy ตัวอย่าง DSN ที่ DataStage ให้มา เลือกตัวอย่างให้ตรงกับ Database ที่เราต้องการ เช่น DB2 หรือ Oracle เป็นต้น ตัวอย่างนี้เป็นตัวอย่างการเพิ่ม DSN สำหรับ DB2
[DB2_eComp] --> ชื่อ DSN
Driver=/opt/Ascential/DataStage/branded_odbc/lib/VMdb220.so
Description=DataDirect 5.00 DB2 Wire Protocol Driver
AddStringToCreateTable=
AlternateID=
Database=ecomp
DynamicSections=100
GrantAuthid=PUBLIC
GrantExecute=1
IpAddress=192.168.1.200
IsolationLevel=CURSOR_STABILITY
LogonID=db2inst1
Password=db2inst1
Package=db2inst1
PackageOwner=db2inst1
TcpPort=50001
WithHold=1
2. แก้ไฟล์ /opt/Ascential/DataStage/Projects/<ProjectName>/ uvodbc.config โดยการเพิ่มชื่อ DSN ลงไปในไฟล์นี้
<DB2_eComp>
DBMSTYPE = ODBC
ข้อควรระวัง ต้องมี space หน้าและหลังเครื่องหมาย = เสมอ
3. ทดสอบว่าสร้าง connection สำเร็จหรือไม่โดย
3.1 เปิด DataStage manager
3.2 Import > Table Definitions > ODBC Table Definitions > OK
3.3 Click pull down box ชื่อ DSN
3.4 ถ้าปรากฏชื่อ DSN ที่เราเพิ่งสร้างไปก็เป็นอันเรียบร้อย

วิธีที่ 2 ผ่าน Native Connection
1. export parameter ของ DB2 เพิ่มเติมลงในไฟล์ /usr/dsadm/Ascential/DataStage/DSEngine/dsenv
DB2DIR=/opt/IBM/db2/V9.1; export DB2DIR DB2INSTANCE=dbinst91; export DB2INSTANCE INSTHOME=/home/dbinst91; export INSTHOME LIBPATH=$DB2DIR/lib32:$INSTHOME/sqllib/lib32:$LIBPATH; export LIBPATH LANG=th_TH; export LANG
2. catalog database บน ETL Server
To catalog the DB2 server node, enter the following command:
db2 catalog tcpip node db2node remote hostname server service_name
where db2node is the name of the system where the DB2 client is installed (which must be unique in your node directory list), hostname is the fully qualified name of the system where the DB2 server is installed, and service_name is the connection port name as defined in the services file.
To catalog a remote database, enter the following command:
db2 catalog database db_name as alias_name at node db2node
where db_name is the name of the remote database, alias_name is the name of the client instance, and db2node is the name of the system where the DB2 client is installed.
3. ทดสอบว่าสร้าง connection สำเร็จหรือไม่โดย
3.1 เปิด DataStage manager
3.2 Import > Table Definitions > Plug-in Meta Data Definitions > DSDB2 > OK
3.3 เลือก Database ที่ต้องการ Import
3.4 กรอก user name และ password > เลือก Tables และ Fully Qualified Table Names > Next
3.5 ถ้าไม่ปรกฏ error ใดๆ และแสดงชื่อ table ขึ้นมาแสดงว่า config เรียบร้อย

02 October 2008

White Noise เพิ่มสมาธิ

นักวิทยาศาสตร์พบว่า sound แบบ white noise , pink noise ถ้าเปิดฟังขณะทำงาน พบว่า จะช่วยให้ทำงานมีสมาธิดียิ่งขึ้น ลองดูสรรพคุณนะครับ

Uses of White Noise:
   * Aid Sleep
   * Enhance Privacy
   * Block Distractions
   * Mask Tinnitus
   * Configure Audio Equipment
   * Soothe Migraines
   * and more...

ลองฟังฟรี ได้ที่ http://www.simplynoise.com/
โดยส่วนตัวแล้ว มันเหมือนฟังเสียงน้ำตก หรือเสียงฝนตก ได้สมาธิเหมือนกัน

การ convert Text File ระหว่าง Windows และ UNIX

โดยปกติแล้ว Text File ที่สร้างขึ้นจาก Windows และ Unix จะมีความแตกต่างกันในเรื่องการการขึ้นบรรทัดใหม่ กล่าวคือ Text File ใน Windows นั้นเมื่อมีการขึ้นบรรทัดใหม่จะมีการแถมคีย์ Enter ใส่เข้าไปให้เราด้วย แต่บน Unix จะไม่มีการแถมคีย์ดังกล่าว การแถมคีย์นี้เลยทำให้เกิดตัวอักษร ^M เมื่อเรานำ Text File ที่สร้างจาก Windows มาเปิดบน Unix ก็จะมี ^M ต่อท้ายทุก ๆ บรรทัด (เป็นของแถมที่เราไม่อยากได้ครับ)
จะทำอย่างไรเมื่อเกิดปัญหาขึ้นแล้ว?
การแก้ไขปัญหานั้นสามารถทำได้หลายวิธีการด้วยกันครับ

1. หากเรามีการใช้โปรแกรม FTP ในการส่งไฟล์ขึ้น Unix เราควรมีการระบุประเภทของไฟล์ก่อนเริ่ม Transfer ให้เป็น ascii ก่อน put เพื่อเป็นการบอกให้รู้ว่าไฟล์ที่กำลังจะส่งไปนี้เป็น Text File หรือ ASCII file นะ
ตัวอย่างจาก Windows

ftp 192.168.1.1
(กรอก user และ password)
ascii
put a.txt
bye
2. การใช้คำสั่ง dos2unix และ unix2dos ซึ่งมีอยู่บนบาง OS เท่านั้น เช่น Solaris และ Redhat
การแปลงไฟล์จาก windows ขึ้นไปบน unix จะใช้คำสั่ง
dos2unix winfile.txt unixfile.txt
การแปลงไฟล์จาก unix ลงมาใช้กับ windows หรือ dos
unix2dos unixfile.txt winfile.txt

3. การแก้ไขโดยใช้ Editor ที่ชื่อว่า vi
วิธีการครับ
ใช้ vi เปิดไฟล์นั้นเช่น
vi winfile.txt
(เราก็จะเห็นไฟล์นั้นที่มี ^M ต่อท้ายบรรทัด)
กดปุ่ม : แล้วพิมพ์
:1,$s/^M/ /g
เมื่อ ^M สามารถพิมพ์ได้โดยการกดปุ่ม ctrl + v