Building a valid SCD type 2
Hi,
has anybody ever designed a mapping to fill a scd type 2 with more than one level? I know the example from the transformation guide and the whitepaper and it works fine with one level. But you can't use it with dimensions with more levels in my opinion:
The problem is how to fill the id from the not base levels.
1) If I use a sequence for that, Oracle can't use query rewrite on this dimension for aggregating higher levels, can it?
2) If I use let's say the id from the enterprise model for the higher levels, that dimension becomes invalid as soon as a higher level attribute changes (check this with dbms_dimension.validate_dimension). So query rewrite will fail again, won't it?
All examples found in oracle docs are using just one level except for one example, and this doesn't fill the id from the second level.
A solution? Comments?
Regards,
Torsten
Hi Patrick!
You've problably defined a number of trigger columns
which determines the loading action, so
NUMBER_OF_CITIZENS would be one of them. As soon as
this changes, on the next load all persons that live
in Köln would be SCD'd (i.e. have their current
record closed and a new one inserted with the new
number of citizens).Correct. Let's use this as an example.
You are making it sound like you have two completely
different source sets which you offer 'independently'
to the dimension (since you want to make use of the
key on the city-level). No. I don't want to use the city-level-key. But when defining a dimension, there is one key (called id in the owb) and some more dependend attributes.
CREATE DIMENSION dim_person
LEVEL person IS (dim_person.pers_id)
LEVEL city IS (dim_person.city_id)
HIERARCHY std (
person CHILD OF
city
JOIN KEY (dim_person.city_id) REFERENCES city
ATTRIBUTE city DETERMINES (dim_person.population)
But in the end it does not matter whether you have a
unique identification of the city level, since
records are inserted on person-level, and that is
where you have defined that extra MATCHING column on,
yes?No. The unique identification on city level is for validating the dimension. Of course the table which holds the dimension data is always valid whatever the data is. But the data has to be well formed for a valid dimension. If I use the example from above with dbms_dimension.validate_dimension(...) the result will be an invalid dimension.
If I'm completely missing the point here, I guess I'm
not understanding your problem and its approach
then.The approach would be building your changed/unchanged transformation for each level. But I am asking here if I am the only person who sees this problem? Or maybe here is no problem.
My bottom line is: when you're loading a dimension
you have only one source set that is compared to the
current dimension, and your point of view is the
lowest level, unregarding any of its higher level
attributes unless they are part of the natural key.
Clarifying this using your example, there are two
source tables:
-ODS_PERSON with attributes PERSON_ID (surrogate
key), PERSON_NAME, PERSON_TAX_NUMBER (natural key),
MARITAL_STATUS, CITY_ID (FK to ODS_CITY)
-ODS_CITY with attributes CITY_ID (SK), NAME (NK),
POPULATION.
The dimension would have the following attributes:
ID, PERSON_NAME, PERSON_TAX_NUMBER,
PERSON_MARITAL_STATUS, CITY_NAME, CITY_POPULATION
(divided over 2 levels).
The JOIN would then compare values from joined
ODS_PERSON-ODS_CITY with the existing dimension
values.
Trigger columns would be PERSON_MARITAL_STATUS,
CITY_NAME, CITY_POPULATION and the overall natural
key (for matching purposes) for the dimension would
be PERSON_TAX_NUMBER.
As you can see, in this example there is no need for
any unique identification on any other level than the
lowest.But you have to give the dimension the unique key. This is what you are doing when renaming the id of the city level to the city_name.
LEVEL city IS (dim_person.city_name)
ATTRIBUTE city DETERMINES (dim_person.population)
Cheers, PatrickI hope I could point to the problem a little bit more.
Regards,
Torsten
Similar Messages
-
Valid instance type for this instalation optiion are SCS, ER2, j2eedi, J2
Hello . I want to install a NW7.3 based BI system. I found reccomendation to start with ABAP instance an then start of Java central server installation
However I have checked option BI Java and additionaly I had EP, AS, EPC, and BASIC.
however on next screen I am asked about SAP system ID(I entered the ABAP installed one i.e. BI4)
However this gets recognized that BI4 is already existing after ABAP.
SAP system BI4 exists and is not suitable for this installation option. DIAGNOS: Valid instance type for this instalation optiion are SCS, ER2, j2eedi, J2eeci , but instance ASCS01 has different type
Solution: Choose a different SAP system ID or unistall the existing one
What to do?
Thank you in advace for helpHello
Now when I have suceesfully installed both (java @abap systems) I wander how to connect them.
I red somewhere I should establish a JCO connection but I wander where
I found new netweawer administrator http://<host>:5<sysnr>00
JCO can be established via http://<host>:5<sysnr>00->configuration->infrastructure->JCO RFC provider.
But which programID to use and..
Is there somewhere some guide how to build BI out of this 2 (java @abap) systems. I only during java instalation entered users to get user communication between java@abap
Thank you in advance -
Hi all,
I'm getting the following error while validating a scd type 2 dimension:
"VLD-0363: For Slowly Changing Strategies Type-II Dimension DIM_A, if any of the trigger, effective date or expiration date is set for a level then all of them must be set"
This is because I'm trying to create a dimension similar to this:
DIM_A
LEVEL_A
DT_BEGIN --effective date
DT_END --expiration date
COD_A
ID_A
DESC_A
LEVEL_B
DT_BEGIN --effective date
DT_END --expiration date
COD_B
ID_B
DESC_B
LEVEL_A_COD_A -- trigger history
I don't want to keep history on the descriptions because I can assume that, if the description changes, then it must be a typo or some kind of correction. I just want to keep history of the changes in the hierarchy.
OWB doesn't let me do this...
Does this make any sense to you? What is your opinion? Have you ever try to do something like this? Are there any workarounds?
Thank you for your comments.
Best Regards.Hi,
my advise is to map the DIM1_NAT_KEY iside the Fact Table of the Business Model, so you have a new Logical Table Source inside the Logical Fact Table that maps the DIM1_NAT_KEY as a measure. Define the Level for this Logical Table Source and set the COUNT DISTINC aggregation. In this way OBIEE knows that that measure is inside a fact an it treat like that.
I hope it helps.
Regards,
Gianluca -
Hi:
We are in the process of creating a data mart. We decided to use SCD Type 2 for dimensions.
I read the SCD 2 transformation logic framework from Oracle Warehouse Builder. Is there any new framework available for this?
I also read Chris Busch's framework on OTN for SCD 2.
http://otn.oracle.com/oramag/webcolumns/2003/techarticles/buschonowb.html
But the links seems to be not working.
Igor, please advice.
Any help would be appreciated
Thanks.Magesh,
A more complete resource on SCD is the June 2003 white papper "Slowly Changing Dimensions with Oracle9i Warehouse Builder". It's a first entry on the Collateral page http://otn.oracle.com/products/warehouse/htdocs/OTN_collateral.html (zipped for download).
As far as Chris' article, do you mean that Listing 1 and Listing 2 links from within the article are not working?
Nikolai Rochnik -
ODI - SCD Type 2 - Insert new row error
Hi All,
For Dimension I have a surrogate key, a natural key, and a column with "overwrite on change", start_date, end_date, current_record_ind. When I run the interface with the default SCD Type 2 for SQl server, this runs fine. But when I change that one column from "overwrite on change" to "insert new row", it fails on the update step. What should I be looking for anf fixing.
Thanks for your time and help.DB: SQL Server 2008.
IKM = IKM MSSQL Slowly Changing Dimension
Error Message: ODI-1228 - Incorrect syntax near the keyword from.
Code: update T
set
from database.dbo.Dim_type as T,
database.dbo.I$_Dim_type as S
where T.Cd = S.Cd
and T.Current_rec_ind = 1
and IND_UPDATE = 'U'
To overcome the issue, I have commented the update code in the Knowledge module and the insert works, but for this one it is ok, but I have requirements where one column needs to be overwritten and other column changes will require to add a new record. How to handle both?
Thanks for your time. -
Error Message during PO GR - Please enter a valid transaction Type
During the goods receipt movement 1010 of a Purchase Order, I am getting following error Message:
"Please enter a valid transaction Type"
I am not a Purchasing expert. Could please help?
Thanks and regards.Hi,
Pl do below 2 things:
1 ) Go to Transaction code = OMBA , Click on Goods receipt Documen type button and check whether MIGO_GR is assigned to DOC Type = WE
2 ) Go to Transaction code = OMJJ , Tick Movement type and select 101 Movement type .
Then You need to click on "Allowed Transaction option ( Left pane ) and see whether transaction code MIGO is mentioned for Movement type 101.
it should solve ur problem. -
Error in merge statement when trying to impliment SCD type 2 using merge...
Hi ,
I'm trying to impliment SCD type 2 using Merge using below blog as reference but sime how it is erroring out with error
http://www.made2mentor.com/2013/08/how-to-load-slowly-changing-dimensions-using-t-sql-merge/
Msg 207, Level 16, State 1, Line 40
Invalid column name 'Current'.
Msg 207, Level 16, State 1, Line 38
Invalid column name 'Current'.
Msg 207, Level 16, State 1, Line 47
Invalid column name 'Current'.
Here is the code below...
--Create Temporaty table to hold dimension records
IF OBJECT_ID('tempdb..#DimVirtualQueue') IS NOT NULL
DROP TABLE #DimVirtualQueue;
CREATE TABLE #DimVirtualQueue
( [VQ_name] [varchar](50) NULL,
[contact_type] [varchar](50) NULL,
[center_node_id] [int] NULL,
[sed_id] [datetime] NULL,
[eed_id] [datetime] NULL,
[insert_date] [datetime] NULL,
[Current] [char](1) NOT NULL
INSERT INTO #DimVirtualQueue(VQ_name, contact_type, center_node_id, sed_id, eed_id, insert_date,[Current] )
SELECT VQ_name, contact_type, center_node_id, sed_id , eed_id,GETDATE(),'Y'
FROM
( --Declare Source and Target tables.
MERGE dbo.tblSwDM_dim_VQ_test AS TARGET
--Source
USING (SELECT
RTRIM(LTRIM(Stage.RESOURCE_NAME)) AS VQ_name,
'Unknown' AS contact_type,
0 AS center_node_id,
CONVERT(INT,CONVERT(VARCHAR(8),GMT_START_TIME,112)) AS sed_id,
CONVERT(INT,CONVERT(VARCHAR(8),ISNULL(GMT_END_TIME,'2070-01-01'),112)) AS eed_id,
GETDATE() AS insert_date
FROM dbo.tblGenesys_stg_RESOURCE_ Stage
WHERE resource_type = 'queue'
AND resource_subtype = 'VirtualQueue'
AND NOT EXISTS (SELECT 1 FROM dbo.tblSwDM_dim_VQ AS dim
WHERE RTRIM(LTRIM(stage.RESOURCE_NAME)) = RTRIM(LTRIM(dim.vq_name))) ) SOURCE
ON TARGET.VQ_name = SOURCE.VQ_name
WHEN NOT MATCHED BY TARGET
THEN
INSERT ( VQ_name, contact_type, center_node_id, sed_id, eed_id, insert_date,[Current] )
VALUES (SOURCE.VQ_name,SOURCE.contact_type,SOURCE.center_node_id,SOURCE.sed_id,SOURCE.eed_id,SOURCE.insert_date,'Y')
WHEN MATCHED AND TARGET.[Current] = 'Y'
AND EXISTS (
SELECT SOURCE.VQ_name
EXCEPT
SELECT TARGET.VQ_name
--Expire the records in target if exist in source.
THEN UPDATE SET TARGET.[Current] = 'N',
TARGET.[eed_id] = SOURCE.eed_id
OUTPUT $Action ActionOut, SOURCE.VQ_name,SOURCE.contact_type,SOURCE.center_node_id,SOURCE.sed_id,SOURCE.eed_id) AS MergeOut
WHERE MergeOut.ActionOut = 'UPDATE';
--Insert data into dimension
INSERT tblSwDM_dim_VQ_test
SELECT VQ_name,contact_type,center_node_id,sed_id,eed_id,insert_date,[Current] FROM #DimVirtualQueue
Any help to resolve issue is appreciated...
Thanks,
Vishal..You need to show the DDL of your target table: dbo.tblSwDM_dim_VQ_test.
Do you have a column named [Current] in this table? -
Hi,
I created several OS X Apps using Adobe Air. That worked quite well before. Now I have do update my OS X Apps - therefore I also needed update my certificates. [ I'm using Flash CC 2014 on OS X Yosemite 10.10 ]. But whatever I do it doesn’t work anymore. I always get this Message saying:
Unable to build a valid certificate chain for the signer.
I googled a lot and the only "guide" I found is this post (from April 2013) about code singing - http://scottgaertner.com/code_signing/
I’m not used to deal with this kind of stuff (CA etc.) - so it's quite confusing to me.
Would anybody please be so kind and tell me what I have to do?
Is there any instruction from Adobe? (I didn't find one yet)
A step by step instruction for absolute dummies would be great!
Best regards and thank you in advance
JanHi Mukesh,
I installed the Flash CC 2014 update and added some Certificates from Apple to my Keychain. Now EVERYTHING works fine again!! :-)
Thank you very much for the Update! :-) Good job!
Best regards
Jan -
Error message generating Adobe Air output Unable to build a valid certificate chain for the signer
error message generating Adobe Air Output: Unable to build a valid certificate chain for the signer.
Are you talking about AIR Help produced by RoboHelp or an AIR application that you are creating?
If the latter, please see the notice at http://forums.adobe.com/community/robohelp/airhelp
If you are using RoboHelp, which version?
See www.grainge.org for RoboHelp and Authoring tips
@petergrainge -
Creating an SCD Type 2 in T SQL without using MERGE
I am attempting to create an SCD type 2 using T-SQL without MERGE (I'm not allowed to use it as a condition of the development work I am doing). I can use a CTE, but I have not tried that yet.
I have a temp table that contains ten records that I am testing with. The following is one variant of the code I have used to try and make this work:
declare
@System_User nchar(50)
,@CurrentDate datetime
,@MaxCheckDate datetime
set @System_User = system_user
set @CurrentDate = getdate()
--INSERT
insert dim.slot
Source_Slot_ID
,Slot_Start_DateTime
,Patients_PerSlot
,IsSlotSearchable
,IsSlotVisible
,[Created_Date]
,[Created_By]
select
src.IdSlot
,src.SlotDateTime
,src.PatientsPerSlot
,src.IsSlotSearchable
,src.IsSlotVisible
,@CurrentDate
,@System_User
from #TmepSlot src
left join dim.Slot dest
on src.IdSlot = dest.Source_Slot_ID
left join (select source_slot_id, max(created_date) as created_date from dim.slot group by Source_Slot_ID) MaxRecord
on dest.Source_Slot_ID = MaxRecord.Source_Slot_ID
and dest.Created_Date = MaxRecord.created_date
where dest.Source_Slot_ID is null
or
src.PatientsPerSlot
<> dest.Patients_PerSlot
or
src.IsSlotSearchable <> dest.IsSlotSearchable
or
src.IsSlotVisible
<> dest.IsSlotVisible
The problem with this variation is that when I change a value in the source like src.Patients_PerSlot, and then run the query, I get the new record i expect, but when I run the query again, a duplicate record gets created.
How do I correctly isolate the correct latest record and add the changed record without inserting that changed record more than once?
Thank you for your help.
cdun2Hi,
shouldn't you use an inner join between dest and maxrecord like so:
from #TmepSlot src
left join (dim.Slot dest
inner join (select source_slot_id, max(created_date) as created_date from dim.slot group by Source_Slot_ID) MaxRecord
on dest.Source_Slot_ID = MaxRecord.Source_Slot_ID
and dest.Created_Date = MaxRecord.created_date)
on src.IdSlot = dest.Source_Slot_ID
where dest.Source_Slot_ID is null
regards,
Rudolf
Rudolf Swiers
Thanks! I don't remember when I've done a join that way, but it makes sense.
cdun2 -
Hi,
I'm relatively new to OBIEE and trying to implement slowly changing dimension type 2.-- i.e. to look up the correct record in the customer dimension (A_FICC_ACCOUNT) based on the transaction date in the fact table (A_FICC_PROFITABILITY). The customer dimension has two time stamps (start_effective_date, end_effective_date), where end_effective_date will be set to NULL for the most recent record.
So far I've set this up as a complex join in the physical layer, as follows:
A_FICC_ACCOUNT.ACCOUNT_ID = A_FICC_PROFITABILITY.ACCOUNT_ID
AND
A_FICC_PROFITABILITY.DAYID >= A_FICC_ACCOUNT.START_EFFECTIVE_DATE AND A_FICC_PROFITABILITY.DAYID < A_FICC_ACCOUNT.END_EFFECTIVE_DATE
OR
A_FICC_PROFITABILITY.DAYID >= A_FICC_ACCOUNT.START_EFFECTIVE_DATE AND A_FICC_ACCOUNT.END_EFFECTIVE_DATE IS NULL
When i run a report in Answers, the generated SQL is as follows:
select distinct T2327.YEARCAPTION as c1,
T13994.SHORT_NAME as c2,
T13994.RANK_W12 as c3,
T13994.RANK_W52 as c4,
T2327.YEARID as c5
from
DIM_FICC_ACCOUNT T13994 /* A_FICC_ACCOUNT */ ,
DIM_TIME T2327 /* A_FICC_TIME */ ,
FACT_FICC_PROFITABILITY T13406 /* A_FICC_PROFITABILITY */
where ( T2327.SKEY = T13406.TIME_ID and T13406.ACCOUNT_ID = T13994.ACCOUNT_ID and T13994.SHORT_NAME = 'PETEROLA' and (T13406.DAYID < T13994.END_EFFECTIVE_DATE or T13994.END_EFFECTIVE_DATE is null) and T13406.DAYID >= T13994.START_EFFECTIVE_DATE )
order by c5, c2, c3, c4
Ran directly against the (Oracle) database using an SQL client, it gives meaningful results according to the recorded historical changes in the dimension. (see attached screenshot). In Answers, however, the results are not correct (see attached screenshot).
http://dl.dropbox.com/u/3345113/output.jpg
Any tips as to what might be wrong would be greatly appreciated.
best regards
MagnusMagnus,
As mentioned customer dimension (A_FICC_ACCOUNT) is a SCD type 2, what is the primary key on this table? I don't think it is ACCOUNT_ID alone.
Usually there exists a surrogate key to keep track of any changes, thus it is on this surrogate key a join should exist with a fact table and applying a filter end_effective date is null should produce the correct result.
If the above scenario is not true in your case, do let me know the structure of the customer dimension and fact table (only columns associated with customer dimension), with relation ship information please.
J
-bifacts
http://www.obinotes.com -
Hello,
I am trying out the SCD type 2 in OWB 10g R2. I have no hierarchies and hence created a dimension with one level. Apart from three business attributes I have 2 mandatory attributes as "EFFECTIVE_DATE" and "EXPIRY_DATE". I have set one of the business attributes to "Trigger History".
I have 3000 rows in the source table. There is no transformation. the data is loaded from source to this dimension directly. One business attribute is loaded using a constant.
When I executed the mapping, all 3000 rows are populated in the target with the expiry date column having null values and current date in the effective date, which is absolutely fine. When I execute the mapping again without changing anything in the source, rows are inserted in to the target with the effective date set to the second run and the expiry date set to previous effective date. As I understand new rows should be inserted only if there is change in the data.
Please correct me if I am wrong. Please clarify and if my understanding is right where am I doing wrong with OWB?
Your help is greatly appreciated
Thanks a lot on advance!
Regards,
MaruthiHi Roelant,
I think it is important to be aware that although Paris - 10gR2 - is not actually buggy (in this respect!), it is really quite idiosyncratic in exactly how it processes SCDs.
I followed up on your and Mark's comments, and did an in depth analysis of this topic. It is at http://www.donnapkelly.pwp.blueyonder.co.uk/documents/OWB_10gR2_SCD.pdf
My conclusions are perhaps of interest to anyone considering doing SCD processing with Paris.
I'll be doing a follow-up this weekend, and publishing a sort of 'how-to-do-it' guide.
Cheers,
Donna
Message was edited to add the words: "in this respect" -
Implimenting SCD Type 2 using SQL Merge
Hello ,
I'm working on implimenting SCD type 2 to keep track of changes in dim_A with fields as
Table A
VQ_dim_Id , VQ_Name, Contact_Type , Contact_Type, Center_Node_Id , Sed_id , Eed_Id , Insert_date, IsCurrent
Table B
CT_Number, Virtual_Queue , Center_Node_ID , Center, Contact_Type.
Table B acts as source to determine changes for Updates and inserts for Table A . with join condition on VQ_Name and Virtual_Queue ( Which is bad but business rules have no way to determined by ID)
my quesiton is I can update VQ_Name , Contact_Type , Center_Node_Id from Source (table B) , Is there any best practice in place where I can insert EED_Id, SED_id as well in case they are missing in the source... any code snippet to impliment SCD with this
kinda functionality helpful !
Thank you ,
Vishal.You can use
WHEN NOT MATCHED THEN
INSERT .......
A best example for SCD type 2 Merge join can be found here...
http://www.mssqltips.com/sqlservertip/2883/using-the-sql-server-merge-statement-to-process-type-2-slowly-changing-dimensions/
Please mark as answer, if this post helped you solve the issue.
Good Luck :) .. visit www.sqlsaga.com for more t-sql code snippets and BI related how to articles. -
Hi ,
I'm trying to impliment SCD type 2 using Merge but unlike typical Merge where you have target and source table, my Inserts come from one table and updates/changes are determined from another table.. I have issue with updates.
below is structure of three tables :
Dimension Table :
VQ_id, VQ_name,
contact_type, center_node_id,
sed_id, eed_id,
IsCurrent, insert_date
VQ_Id is dimension ID based on which Inserts and undates are determined.
VQ_Name : type 1 change
Contact_type , Center_node_ID : type 2 changes
is Current : flag
sed_id , eed_id are start and end effective date ID's
Insert table :
VQ_id,VQ_Name ,Contact_Type , Center_node_ID , Sed_id , eed_id , Insert_date
from the above table, based on VQ_ID , new records are determined .
Updates/history records :
Type 2 changes are tracked based on below table..
VQ_ID, contact_type,
center_node_id, Start_Effective_Date,
CT_ID, Submit_Date
Based on VQ_ID , contact_type, center_node_id,
Start_Effective_Date , end effective date are determined.
Any help in this regard is appreciated...
Thanks ,
Vishal.-- This is dimension table
CREATE TABLE [dbo].[tblSwDM_dim_VQ](
[VQ_dim_id] [int] IDENTITY(1,1) NOT NULL,
[VQ_id] [int] NOT NULL,
[VQ_name] [varchar](50) NOT NULL,
[contact_type] [varchar](50) NULL,
[center_node_id] [int] NULL,
[sed_id] [int] NULL,
[eed_id] [int] NULL,
[IsCurrent] [bit] NOT NULL,
[insert_date] [datetime] NULL,
[Start_Effective_Date] AS (CONVERT([datetime],CONVERT([varchar](8),[sed_id],(0)),(0))),
[End_Effective_Date] AS (CONVERT([datetime],CONVERT([varchar](8),[eed_id],(0)),(0))),
CONSTRAINT [Pk_tblswDM_dim_VQ] PRIMARY KEY CLUSTERED
[VQ_dim_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
-- THis ifrom where updates/type2 changes would be loaded
CREATE TABLE [dbo].[tblSwDM_stg_change_control_next_gen](
[row_id] [int] IDENTITY(1,1) NOT NULL,
[VQ_id] [int] NOT NULL,
[contact_type] [varchar](50) NOT NULL,
[center_node_id] [int] NOT NULL,
[Start_Effective_Date] [datetime] NOT NULL,
[CT_ID] [int] NULL,
[Submit_Date] [datetime] NOT NULL,
[isValid] [bit] NULL,
[Remarks] [varchar](100) NULL
) ON [PRIMARY]
Example...
for a Record in dimention table... [dbo].[tblSwDM_dim_VQ]
Before Updates :
VQ_dim_id VQ_id VQ_name contact_type center_node_id sed_id eed_id IsCurrent insert_date Start_Effective_Date End_Effective_Date
2203 376946 Fraud_Span_Det_VQ RFD USCC Detection 4536 20131018 20700101 1 2014-03-21 12:02:42.750 2013-10-18 00:00:00.000 2070-01-01 00:00:00.000
Final Result :
VQ_dim_id VQ_id VQ_name contact_type center_node_id sed_id eed_id IsCurrent insert_date Start_Effective_Date End_Effective_Date
2203 376946 Fraud_Span_Det_VQ RFD USCC Detection 4536 20131018 20140423 0 2014-03-21 12:02:42.750 2013-10-18 00:00:00.000 2014-04-23 00:00:00.000
2605 376946 Fraud_Span_Det_VQ RFS USCC Spanish 4537 20140424 20700101 1 2014-05-07 11:51:00.543 2014-04-24 00:00:00.000 2070-01-01 00:00:00.000 -
Has anyone ever implemented SCD Type-4 using SSIS??
Hello Experts!!
I have been trying to implement SCD TYPE-4 using SSIS and really got stuck and searched on-line for help. for my surprise, there isn't anything up on this topic.
I know the theory behind SCD Type-4 is to maintain history in seperate tables in a rapid changing dimensions.
please help if any of you ever implemented scd type-4 using SSIS.Hi,
The stock Slowly Changing Dimension Transformation of SSIS only supports SCD Type 1 and Type 2. For SCD Type 4, it maintains two tables: one to keep the current data, and the other one to keep the historical data. As a workaround, you can also implement
SCD Type 1 via SCD Transformation, and implement Change Data Capture at the same time. SSIS also provides CDC Control Task and related Data Flow components.
References:
http://www.bidn.com/blogs/TomLannen/bidn-blog/2606/slowly-changing-dimension-type-1-changes-using-ssis-scd-component
http://www.mattmasson.com/2011/12/cdc-in-ssis-for-sql-server-2012-2/
Regards,
Mike Yin
TechNet Community Support
Maybe you are looking for
-
Why doesn't my pictures show up on my Ipad and Iphone? I have my pictures in the photostream upload folder but they do not seem to be uploading. Thanks.
-
I am getting the following error messages:
I am getting the following error messages: May 29 15:31:42.404 utc: %SFF8472-5-THRESHOLD_VIOLATION: Gi1/1: Rx power high warning; Operating value: -2.0 dBm, Threshold value: -3.0 dBm. May 29 15:41:42.974 utc: %SFF8472-5-THRESHOLD_VIOLATION: Gi1/1:
-
Dear All, My self is Chandra Gopal, I have 3 yrs of core HR exp and good knowledge on ABAP also. I would like to take HR-ABAP course from MKT. Could you please give me your suggesion on this. I don't have Technical background education. I just compl
-
The sequence to stop and start xMII?
Hi, good afternoon: Could anybody provide the sequence to stop and start xMII? Is it different from xMii11.* to xMii12.*? Thanks!
-
Hi all, I was trying to install FDM in the same machine where EPMA 64bit is installed, but installer didnt permit to proceed with the installation. Oracle compatibility matrix doc also says that its not possible to install FDM/HSF (32bit) in the same