20 December 2008

DataStage: Can't connect by dsoper

ผมต้องการจะสร้าง user ชื่อ dsoper ขึ้นมาเพื่อให้ operator ใช้ในการ login เข้ามา run job เท่านั้น ไม่สามารถ view และ edit job ได้
ปัญหาคือ ไม่สามารถใช้ dsoper login ผ่าน DataStage Director ได้ และขึ้น error box ดังนี้
Error Code: 39202
Fail to open project
สิ่งที่ได้ทำไปแล้วคือ
1.    สร้าง user ชื่อ dsoper โดยให้อยู่ในกรุ๊ป dstage
$ id
uid=210(dsoper) gid=999(dstage) groups=1(staff),205(dba)
2.    Add dsoper ใน IBM Information Server ผ่าน Web Console โดยให้ Suite Component = DataStage and QualityStage User
3.    กำหนด Project Role = DataStage and QualityStage Operator ผ่าน DataStage Administrator
4.    ตรวจสอบ ds.rc ในโฟลเดอร์ $DSEngine/sample พบว่า umask 002 แล้ว
5.    ทำการ chmod -R g+w projpath แล้ว

วิธีแก้ไข
เปลี่ยน permission ของ path $UVTEMP ให้คนใน group มีสิทธิ์ write ได้ สามารถหา path $UVTEMP ได้ จาก

$ grep UVTEMP /Dstage/IBM/InformationServer/Server/DSEngine/uvconfig

# UVTEMP - is the name of the directory
#UVTEMP /tmp
UVTEMP /Dstage/IBM/InformationServer/Server/Scratch

จากตัวอย่างแสดงว่าต้องไป grant ที่ path /Dstage/IBM/InformationServer/Server/Scratch ให้เป็น 775

12 December 2008

Sort Stage: Preserve Partitioning

[DSEE 8.0.1, AIX]

Event Type: Warning

Message: ds_ts_lead.lnk_ts_lead_Sort: When checking operator: Operator of type "APT_TSortOperator": will partition despite the
preserve-partitioning flag on the data set on input port 0.

 

Details:

ใน job มีการทำ sorting in link

 sort_preserve_part

 

Action:

Set preserve partitioning = Clear ที่ stage ก่อนหน้า sort stage

clear_preserve_part

04 December 2008

Log Message Handlers

ในกรณีที่เราเจอ log message เช่น warning log ที่เป็นการแจ้งเตือนในสิ่งที่เราไม่สามารถควบคุมหรือแก้ไขได้ DS8 สามารถที่จะจัดการกับ message เหล่านี้ได้ เช่น ลบ message นี้ออกไปจากสารบบ หรือ เปลี่ยน type จาก warning ให้เป็น informational แทน เป็นต้น

กฏที่เราสร้างขึ้นมานั้น แยกออกได้ 2 ระดับ คือ

  • ระดับ project กฏที่เราสร้างขึ้นจะมีผลกับทุกๆ job ใน project
  • ระดับ job กฏที่สร้างขึ้นมาจะมีผลต่อ job นั้นๆ เท่านั้น หลังจากการสร้างกฏแล้ว จำเป็นต้อง compile job ใหม่ และกฏนี้จะ overwrite กฏระดับ project

กล่าวคือ เมื่อ job เริ่มรันจะเกิด log message ขึ้นมา DS จะไปเช็คว่า log ดังกล่าวเข้ากฏข้อใดในระดับ job หรือไม่ ถ้าไม่มี จะไปเช็คในกฏระดับ project ต่อไป ถ้าไม่เข้ากับกฏข้อใดในระดับ project เลย ก็จะ write ลง director เป็นอันสิ้นสุด

Message handlers หรือกฏที่เราสร้างขึ้น ใช้สำหรับ Info และ warning เท่านั้น ไม่สามารถใช้กับ fatal error ได้

วิธีการสร้างกฏ

ถ้าต้องการสร้างกฏระดับ project ต้องไป enable ที่ DataStage Administrator เสียก่อน แต่ถ้าสร้างแค่ระดับ job ก้ข้ามขั้นตอนนี้ไปได้เลย

login เข้า DataStage Administrator ด้วยuser ที่มีสิทธิ์ระดับ admin เช่น dsadm เป็นต้น ไปที่ project properties เลือก tab "Parallel" ที่ drop down list ชื่อ Message handler for Parallel Jobs เลือก TF_Handler ดังรูป

dsadm_msg_hdlr

 

ใน Director เลือก log message ที่ต้องการจะสร้างกฏ click ขวาที่ message นั้น เลือก Add rule to message handler

dsdir_add_rule

 

เลือก option box ตามต้องการ

  • option แรก คือการสร้างกฏระดับ job
  • option ที่สอง คือการสร้างกฏระดับ project
  • option ที่สาม คือการสร้างกฏระดับตามที่เราต้องการ

เลือก Action ตามต้องการ

  • Suppress from log: ไม่เขียน log นี้ ทำให้ไม่เห็นใน director
  • Promote to Warning: เปลี่ยนสถานะจาก informational เป็น warning
  • Demote to Informational: เปลี่ยนสถานะจาก warning เป็น informational

กดปุ่ม Add Rule เป็นอันเสร็จพิธี

dsdir_add_rule_detl

 

ถ้าต้องการ Edit กฏที่เราเคยสร้างไว้ ให้กดปุ่ม Edit Handler

 

ที่มา: IBM Information Server/Websphere DataStage: Administration/Director Client Guide/Chapter 5. The Job Log File/Message Handlers (C:\IBM\InformationServer\Documentation\i46dedrc.pdf)

03 December 2008

Reading Oracle NUMBER Datatype Column

[DSEE 8.0.1, Oracle 10g, AIX]
Event Type: Warning
Message: ora_bay_ts_cust_info: Column CUST_ID floating point decimal is not fully supported; adjusting the scale.
Message: ora_bay_ts_cust_info: When checking operator: When binding output interface field "CUST_ID" to field "CUST_ID": Implicit conversion from source type "decimal[38,10]" to result type "decimal[38,0]": Possible precision limitation.

Details:
BAY_TS_CUST_INFO เป็นตารางบน Oracle 10g โดยที่ Column CUST_ID เป็น Primary Key มี data type คือ Number
Warning นี้จะเกิดขึ้นเฉพาะการอ่านข้อมูลจาก Oracle Enterprise Stage บน column ที่มี data type เป็น Number เท่านั้น ถ้าเป็น Number(n) หรือ Integer หรือ Decimal(m,n) จะไม่เกิดปัญหานี้
cust_id_number 

Cause:
data type NUMBER ของ Oracle เป็น data type ที่ไว้เก็บตัวเลข สามารถยืดหยุ่นเป็น Integer หรือ Decimal ก็ได้ โดยสามารถขยายไปได้ถึง Decimal(38,10). เมื่อเรา import table definition DataStage จะเลือกใช้ Decimal(38,10) แทน NUMBER. Warning ที่เห็นเกิดขึ้นเพราะ DSEE ไม่ support data type NUMBER ของ Oracle ทำให้ DSEE ทำการเปลี่ยน scale ของตัวเลขไป ซึ่งขณะนี้ก็ยังไม่ทราบว่าการทำงานภายใน DSEE เองไปเปลี่ยนแปลงตัวเลขนี้อย่างไร 

Action1:
ถ้ามองว่า warning message นี้ไม่สำคัญมากนัก ให้ Suppress warning log ไปก็ได้
or Action2:
ให้แก้ SQL statement ตอนที่ select data ออกมาจาก Oracle Enterprise Stage โดยใข้ CAST function  เช่น
select cast(col1 as decimal(38,10)) as col1 from tab1;

25 November 2008

String Math Function

[DSSE]
Detail:
DataStage โดยเฉพาะ Server Edition จะมีปัญหากับการคำนวณตัวเลขที่มีค่ามหาศาล ไม่ว่าจะตัวเลขนั้นจะเป็น integer หรือ decimal ก็ตาม เท่าที่เคยเจอเคสก็คือหลักหมื่นล้าน 1ตามด้วยศูนย์ 10 ตัวขึ้นไป ถึงแม้ว่าจะกำหนด precision และ scale ของ decimal ใน table definition อย่างถูกต้องแล้วก็ตาม ผลลัพธ์ที่ได้จากการบวก ลบ คูณ หาร ก็ยังคงผิดเพี้ยนไปหมด เช่น ทศนิยมหายไป ตัวเลขหลักท้ายๆหายไป เป็นต้น
Action:
ใช้ String Math Function แทนเครื่องหมาย + - * / ธรรมดา ดังนี้
  • SADD แทน +
  • SSUB แทน -
  • SMUL แทน *
  • SDIV แทน /
ใส่ไปใน derivation แล้วจะขึ้นสีแดงเหมือน error ... ไม่เป็นไร ยังงัยก็ compile ผ่าน run ได้แน่นอน
มันขึ้นสีแดงเพราะ DS ไม่รู้จัก function นี้ ถ้าไม่ซีเรียสก็ปล่อยมันไป ถ้าอยากให้ดูเรียบร้อยก็ไปเพิ่ม function เหล่านี้ใน DSParams ซึ่งเป็นไฟล์ที่เก็บชื่อ function, routine และตัวแปรต่างๆ ของ DataStage

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

13 September 2008

User "ROOT" does not have the CONNECT privilege

Problem:
DataStage job abort เนื่องจากไม่สามารถ connect DB2 ได้เพราะ user "ROOT" ไม่มีสิทธิ์ select table นั้นๆ ปัญหาคือว่า ทำไมใช้ root เข้าไป connects หล่ะ? ทั้งๆที่ใน DB2 stage ก็กำหนด userid ให้อ่านจาก parameter set (oper)


Error Message:
PrepareSKAR.db2_SG1_SK_AR,1: Error Idx = 1;
DB2Driver Embedded SQL message: SQL1060N  User "ROOT    " does not have the CONNECT privilege.  SQLSTATE=08004
;
sqlcode = -1060;
sqlstate = 08004
Cause:
DB2 ใช้ user ที่ปล่อยรัน job ในการ connect และ execute sql command !?!? ส่วน user ที่กำหนดใน DB2 stage นั้นใช้ในการ authenticate เท่านั้น... เป็นข้อควรระวังอย่างยิ่ง


Solution:
ควรใช้ user เดียวกันหมด ไม่ว่าจะเป็น user ระดับ OS ที่ใช้สำหรับ login เข้ามารัน job, user ระดับ DB2 ที่มีสิทธิ์เพียงพอในการทำงาน (select, insert, delete, update เป็นต้น) กับ table ที่เกี่ยวข้อง
คงต้องลองดูว่า db อื่นๆเป็นเหมือนกันหรือเปล่า หรือเป็นแค่ DB2 เท่านั้น

05 September 2008

DB2 ใช้ service หรือ port number อะไรอยู่

พยายาม connect DB2 อยู่ตั้งนาน connect ไม่ได้ซักที เพิ่งมารู้ว่าใส่ port number ผิด
อย่า! ไปดู port number ของ DB2 จาก /etc/services เชียวนะ เพราะมันไม่ใช่!!

$ vi /etc/services
# Local services
DB2_db2inst1 60000/tcp
DB2_db2inst1_1 60001/tcp
DB2_db2inst1_2 60002/tcp
DB2_db2inst1_END 60003/tcp


วิธีการที่ถูกต้องคือ ใช้คำสั่ง

$ db2 get dbm cfg
TCP/IP Service name(SVCENAME) = 50001

04 September 2008

การประเมินพนักงาน

ได้ไอเดียการประเมินผลพนักงานโดยเฉพาะในสาขา IT มาจากการพูดคุยกับพี่คนนึง แล้วก็อ่านเจอเรื่องการประเมินผลของ google เลยเอาบล็อกเก็บไว้ดิบๆก่อน ว่างๆค่อยคิดต่อยอด + หาอ่านเพิ่มเติมต่อไป

หัวข้อการประเมิน มอง 3 มุม แล้วแต่จะให้น้ำหนักทางด้านไหน ขึ้นอยู่กับเป้าหมายของแต่ละงาน
  1. Operation - ประเมินในมุมมองปกติทั่วๆไป เช่นเรื่องวินัย ความขยัน ลา-สาย-ขาดบ่อยมั้ย แอบหลับตอนกลางวันหรือเปล่า เอาแต่เล่นเอ็มมั้ย
  2. Innovation - ประสิทธิภาพในการทำงาน มีวิธีการ coding ใหม่ๆมั้ย มี process เจ๋งๆที่ทำให้เหนื่อยน้อยลงมั้ย
  3. Customer Satisfaction - ให้บริการทุกระดับประทับใจหรือไม่
วิธีการประเมิน
กูเกิ้ลใช้วิธี The peer-based review model คือการประเมินผลโดยให้น้ำหนักในการให้พนักงานประเมินกันเองเป็นส่วนใหญ่ ส่วน manager ประเมินนั้นเป็นเพียงน้ำหนักส่วนน้อย วิธีนี้อุดช่องโหว่หลายๆจุด ไม่ว่าจะเป็นการชเลียร์หัวหน้า การทำงานเอาหน้า เป็นต้น อีกทั้งยังช่วยเสริมสร้างความทำงานร่วมกันเป็นทีมในหมู่มวลพนักงานด้วย

29 August 2008

Five most important lessons I've learned as an entrepreneur.

เจอบล็อกของ Guy Kawasaki คอลัมนิสต์นิตยสาร Entrepreneur Magazine เป็นนักธุรกิจที่เก่งกาจคนนึง เคยทำงานที่แอปเปิ้ล แต่งหนังสือมากมายเกี่ยวกับธุรกิจนวัตกรรม (Innovative Business) ถ้าสนใจประวัติของเค้า ลอง search หาดูได้ไม่ยาก

Guy Kawasaki ได้แนะนำบทเรียนสำคัญสำหรับผู้ประกอบการทั้งหลายไว้ให้คิด 5 ข้อ

1. เน้นที่กระแสเงินสดมากกว่ากำไร ไม่ใช่ไม่เน้นที่กำไรนะ แต่ถ้าเงินสดขาดมือ อะไรๆก็แย่ทั้งนั้น ข้อนี้เข้าใจง่าย

2. สร้างความคืบหน้าทีละน้อยทุกๆวัน พัฒนาฝีมือวันละนิด รู้จักสนิทสนมลูกค้ามากขึ้นวันละนิด การประสบความสำเร็จแบบ Big Bang มันหายากขึ้นทุกที

Boyd: การพัฒนาวันละนิดย่อมต้องใช้ความอดทนแต่เราจะไม่รู้สึกเจ็บปวด ขณะที่การเปลี่ยนแปลงชั่วข้ามคืนนั้นรวดเร็วทันใจแต่ย่อมมาพร้อมกับการสูญเสียบางสิ่งไป

3. ลองดู! Guy บอกว่า "โชค" เป็นส่วนสำคัญในการประสบความสำเร็จ ดังนั้น (ก)อย่ามัวแต่นั่งดูคนอื่นสำเร็จ (ข)โชคมักเข้าข้างคนที่ลองทำสิ่งต่างๆที่ไม่ใช่กระบวนการคิดแบบธรรมดา

Boyd: อ่านแล้วงงๆ แต่คิดว่า น่าจะอารมณ์ประมาณนี้ คือ เราต้องลองเปิดโอกาสให้ตัวเอง พนักงาน และบริษัทได้ลองทำอะไรใหม่ๆแหวกๆ ไม่ว่ามันจะดูเข้าท่าหรือไม่ก็ตาม เพราะยิ่งเราได้เริ่มต้นเรียนรู้ และทดลองเร็วเท่าไหร่ เราก็จะประสบความสำเร็จเร็วขึ้นเท่านั้น - The sooner failure, The sooner success.

4. อย่าไปฟังเสียงนกเสียงกา ถ้าเรามั่นใจและเชื่อกับงาน(หรือโปรเจคต์) จงลงมือทำมันซะ

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

ที่มา - http://www.sun.com/solutions/smb/guest.jsp?blog=five_lessons

ใช้ Transformer ไม่ได้ ใช้แล้วCompile Error

สำหรับ DataStage 8 หรือชื่อใหม่ IBM Information Server (IIS 8) ที่ server อยู่บน Windows เราอาจจะเจอปัญหาเรื่อง compile error ในทุก job ที่มีการใช้ transformer โดยจะปรากฏ error แบบนี้
err_compiler1
err_compiler2

Error Message:
Error compiling parallel transformer

Platform: Windows Server


สาเหตุ

เกิดจากการใช้ Microsoft Visual Studio .NET 2003 C++ version 7.1 or later ในการ compile job

วิธีการแก้ไข

ทำการแก้ไขค่า environment variable 2 ตัว คือ APT_COMPILEOPT and APT_LINKOPT ดังนี้
  1. Click Start → IBM Information Server → IBM WebSphere DataStage and QualityStage Administrator.
  2. Log in to the Administrator interface.
  3. Click Projects → Properties → Environment
  4. Select Parallel → Compiler → APT_COMPILEOPT and delete the string -W/Zc:wchar_t- from the end of the existing setting in the Value field.
  5. Select Parallel → Compiler → APT_LINKOPT and delete the string -W/Zc:wchar_t- from the end of the existing setting in the Value field.

25 August 2008

วิธีการ Unlock Jobs

วิธีการ unlock jobs สำหรับ DataStage หรือ IBM Information Server version 8 ขึ้นไป
1. Open Internet Explorer, Browse to http://{server_name}:9080/index.jsp. where {server_name}:9080 is the server name and port IBM IS installed



2. Log in as “dsadm” or user with administrator privilege



3. Click on tab “Administration”



4. In the left pane, Select “Session Management > Active Sessions”



5. Select session to work with in the right panel



6. In the most right pane, Click “Disconnect” if you want to force session to be disconnected





7. In the most right pane, Click “Open” to see user information

19 August 2008

system date, time และ timestamp

สำหรับ DB2
อยากได้ system date time หรือ timestamp จาก SQL statement ให้ใช้คำสั่ง

  • CURRENT DATE
  • CURRENT TIME
  • CURRENT TIMESTAMP

ตัวอย่างเช่น


SELECT *, CURRENT TIMESTAMP
FROM SCHEMA.TABLE_A;

SELECT CURRENT DATE
FROM SYSIBM.SYSDUMMY1
FETCH FIRST 1 ROWS ONLY;

ตัดไฟล์เอาเฉพาะบรรทัดที่อยู่ระหว่างคำที่เราสนใจ

ตัดไฟล์เอาเฉพาะบรรทัดที่อยู่ระหว่างคำที่เราสนใจ ยกตัวอย่างเช่น ไฟล์ z.conf มี content แบบนี้
[job:a]
a=1
b=2
c=3
[/job:a]


อยากได้เฉพาะบรรทัดที่ 2-4 ซึ่งอยู่ระหว่างคำว่า [job:a] และ [/job:a]
ใ้้ห้ใช้คำสั่ง awk ดังนี้

awk '/\[job:a]/ ,/\[\/job:a]/' z.conf | grep -v "^\["


สามารถเอาไปประยุกต์ใช้ได้ ในกรณีที่เก็บตัวแปรแยกเป็นชุดๆในไฟล์เดียว

18 August 2008

Replace NULL with values

กรณีที่ต้องการเปลี่ยนค่า NULL เป็นค่าอื่นตามที่เราต้องการ ใน SQL statement ของ DB2 สามารถใช้ function ที่ชื่อว่า "COALESCE" โดยมี syntax ดังนี้

COALESCE(checking_col, replace_value)

ซึ่งสามารถเอาไปใช้ใน select clause หรือ where clause ก็ได้ เช่น

SELECT COALESCE(S1993.DEPTNO,S1994.DEPTNO) AS DEPT, S1993.SALES, S1994.SALES

FROM S1993 FULL JOIN S1994 ON S1993.DEPTNO = S1994.DEPTNO
ORDER BY DEPT;


SELECT * FROM GRADES
WHERE COALESCE(SCORE1,0) + SCORE2 > 100;


อีกวิธีหนึ่งใช้ case เอาแต่น่าจะใช้ได้ใน select clause เท่านั้น

SELECT CASE WHEN e1 IS NOT NULL THEN e1 ELSE e2 END
FROM SALES;

Select NULL

Because NULL doesn't have a type, so DB2 doesn't know what to do with it. You need to use CAST function.

Syntax:
CAST (NULL AS data-type)

select cast(null as char(10)) as MyNull from sysibm.sysdummy1;
select cast(null as integer) as MyNull from sysibm.sysdummy1;

sysibm.sysdummy1 is the system table using for select system value.

15 August 2008

How to delete dataset via script

วิธีลบ dataset โดย script

$ . /opt/IBM/InformationServer/Server/DSEngine/dsenv ($DSHOME)

$ cd /opt/IBM/InformationServer/Server/PXEngine/bin

$ export APT_CONFIG_FILE=/opt/IBM/InformationServer/Server/Configurations/default.apt

$ orchadmin rm [directory]/[dataset_name].ds


วิธีลบ dataset จาก Designer
1.Login into DS Manager
2.Goto Tools-> Dataset Management
3.Select the Dataset that you want to delete
4.Once the Dataset is selected then press delete button.