วันศุกร์ที่ 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/

วันศุกร์ที่ 7 พฤศจิกายน พ.ศ. 2557

Migrate SSIS 2005 to SSIS 2014 via Visual Studio 2013

SSIS Package can be upgrade by VS 2013 in vizard .

In case of package store password , you can set password to all package by select all package you want and type password in a box and apply to all.



ORACLE Connect 
There are many concern about connect oracle.

Software require (Oracle)
   Oracle_win32_11gR2_client   --> For dev environment
   Oracle_win64_11gR2_client    --> For Server
   If you want to use SQL Developer you need to install Java (32bit)
   Download Java : jdk-7u71-windows-i586
*** IMPORTANT --  (Installation Type: Administrator)

NLS_LANG
should be AMERICAN_AMERICA.WE8MSWIN1252
In my case NLS_LANG has set default to THAI_THAILAND.TH8TISASCII  that's not working!


SSDT (SQL Server Data Tools) 
In SQL Server 2005,2008,2008R2 we know the Business Intelligence Solution .
Since SQL Server 2012 Microsoft has change the way to design solution to be SSDT
Download SSDThttp://www.microsoft.com/en-us/download/details.aspx?id=42313


------------------- Latest Update ---------------------

Package update
-- 2005 -->2014 ต้องใส่รหัสผ่านตอน Update
--Data source sql server เปลี่ยน type จาก     Native OLE DB เป็น SQL Server Native Client 11.0
--Require ORACLE Client ขอโน๊ตมาลง
  ตอน install ให้เลือก custom เพื่อเลือก sql plus และ Connection manager / Net client
--Not success , Stuck at 80%

******ลง แบบ Admin จะได้จบๆเรื่อง


Oracle Base --> C:\Oracle\Home

Software Location --> C:\Oracle\Home\product\11.2.0\client_1


-- Path variable value --
C:\Oracle\bin;C:\Oracle;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOTxxx

วิธีจัดการ Warning - Error ตอน Install Oracle Client
http://dba.stackexchange.com/questions/50867/environment-varible-path-exceeding-recommended-length-solution
คือเปิด system variable -- Path -- ลบให้เหลือสั้นๆ กด OK จากนั้น Start install ใหม่ ทำเสร็จ Set ให้เหมือนเดิม


--Path value หลังจาก Install เสร็จ
C:\Oracle\Home\product\11.2.0\client\bin;C:\Oracle;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine xxxx

C:\Oracle\Home\product\11.2.0\client\bin;C:\Oracle;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOTxxx

-- ลง 32 Bit เสร็จแล้วสามารถใช้งานได้ โดยเลือก
 Native OLE DB\Oracle Provider for OLE DB


-- ขั้นตอนการแก้ SSIS Package

Souce (Oracle) --> Change defaultCodePage -->TRUE
Data Type --> Unicode string[DT_WSTR]


-- การ Create database เพื่อทดสอบ มีerror
CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file
ให้ Set permission ให้ everyon สามารถ write
-- ต้องแก้ Compat ให้ >=100 , 90 ไม่ผ่าน
SET COMPATIBILITY_LEVEL = 100



---------- NLS LANG ตอน Design package มีส่วนสำคัญ ต้อง set เป็น AMERICAN ถ้าเป็น THAI --> Error
THAI_THAILAND.TH8TISASCII
AMERICAN_AMERICA.WE8MSWIN1252



--------- SCRIPT TASK
Need to install VSTA Microsoft (Visual Studio Tools for Applications 2012 SDK)
-->Set default language of Script task
   Tool->Option->Business Intelligence Designer->Integration Service
      -->Chage Script langage to VB



-------- Excel source
Need to install  (x86 on designer Machine)
AccessDatabaseEngine_x86-NeedtoInstall.exe




---- CARD Reward Balance ที่มีปัญหา
  --->Script shoud chage to Merge instead of Inset if not exist








วันอังคารที่ 28 พฤษภาคม พ.ศ. 2556

How to clear index (aggregation file) from you Cube or partition

Using  ProcessClearIndexes 
ปกติแล้วใน UI (SSMS) จะไม่มี Option นี้ให้เลือกใช้
แต่สามารถใช้ได้โดยการใช้ Script แทน


Credit by :
http://searchsqlserver.techtarget.com/tip/Recommended-practices-for-SQL-Server-Analysis-Services-aggregations


วันอังคารที่ 9 ตุลาคม พ.ศ. 2555

Sql server , Summary accumulate , running total



I prefer  the second and the third sulution

Solution 2: The "Celko" Solution

(NoIndex = 25 secs, Index = 20 secs)
SELECT DayCount,
       Sales,
       Sales+COALESCE((SELECT SUM(Sales) 
                      FROM Sales b 
                      WHERE b.DayCount < a.DayCount),0)
                         AS RunningTotal
FROM Sales a
ORDER BY DayCount



Solution 3: The "Guru's Guide" Solution

(NoIndex = 38 secs, Index = 17 secs)
SELECT a.DayCount,
       a.Sales,
       SUM(b.Sales)
FROM Sales a
CROSS JOIN Sales b
WHERE (b.DayCount <= a.DayCount) AS RunningTotal
GROUP BY a.DayCount,a.Sales
ORDER BY a.DayCount,a.Sales