วันอังคารที่ 7 กรกฎาคม พ.ศ. 2558

SSIS Checkpoint File Object Type issue with complex data types

What the BUG????

SSIS  2014 , Visual Studio 2013 Update 4

ปัญหาของ Checkpoint file ที่ set ใน Package กรณีมี varible ประเภท Object ก่อให้เกิดปัญหาซึ่งยังหาสาเหตุไม่เจอ

PackageA : มีกระบวนการทำงานซึ่งมีการ Execute SQL Task เก็บ Result set ไว้ในตัวแปรประเภท OBJECT แล้วนำไป Fetch ใน For each loop container ซึ่งก็ทำงานได้ดี โดยมี Fetch data ถึง 2 รอบ

ซึ่งทำงานได้ปกติ

แต่เมื่อมีการ Add new task ขึ้นมาก่อนหน้า แล้วทำการ Execute SQL & Fetch data กลับไม่สามารถ Fetch data ออกมาได้ ทำอย่างไรก็จะได้ค่า 0 record จากการ fetch

ทดสอบแก้ปัญหาหมดทุกอย่าง จนมาเจอว่าเมื่อลองปิดการใช้งาน Checkpoint file ปรากฏว่าสามารถ Fetch data ออกมาได้อย่างถูกต้อง


ปวดหัว! WTF

วันพุธที่ 1 กรกฎาคม พ.ศ. 2558

MDX Query : Query dimension member only

Some time you may want to check or validate dimension members only.
You don't need to process cube.

The syntax is very simple

SELECT {} ON 0,
{[Dim_Customer].[Customer_ID].Members } ON 1
FROM [$Dim_Customer]


Compare to Cube

FROM [Cube_Name] ---> Change cube name format to FROM [$Dim_Name]

"$" Using dollar sign for dimension name




วันศุกร์ที่ 16 มกราคม พ.ศ. 2558

SSIS Tips

---- Data flow : Error rows redirect.
ตัวอย่าง Table customer มี 1000 records โดยมี CUST_CODE = PK
Import data จาก Text file 100 รายการ
มี 5 รายการที่มี CUST_CODE ซ้ำกับของเดิม

** Concern
  - Default ของ "Data acess mode"  (Destination) คือ  "Table or view - fast load"
    ถ้าเป็นตัวเลือกนี้ ทั้ง 100 รายการจะถูกมองว่า Error ทั้งหมด ซึ่งทำให้ยากต่อการวิเคราะห์ว่า Record ใด Error

   ดังนั้นกรณีที่ต้องการให้มีเฉพาะ 5 รายการที่ซ้ำ Redirect row ไปเก็บไว้ใน Error log table ให้เปลี่ยน Mode เป็น "Table or view"

Credit : http://stackoverflow.com/questions/5172801/bids-ssis-redirect-row-on-error-sends-too-many-rows





-----Inferred Dimension members
สรุปย่อๆคือ การสร้างรายการข้อมูลของ dimension ขึ้นมากลางอากาศขณะโหลด Fact table
เช่น Fact_sale มี Product ใหม่ แต่ใน dim_product ยังไม่มี Record ก็สร้าง Record ใน dim_product เลย
แล้วเอาไป insert in fact_sale โดยมี Flag ใน dim_product บอกว่า Record นั้นๆเป็น Inferred หรือไม่ (Boolean) แล้วค่อยมา Update ข้อมูลอื่นๆภายหลัง

แต่ขั้นตอนการ Implement ก็ซับซ้อนขึ้นด้วย

Credit : http://www.sqlservercentral.com/articles/Data+Warehouse/71233/