@@ -2077,7 +2077,6 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
20772077 prepareKeyStatement . AppendLine ( " AND VERSION_ID = " + versionId ) ;
20782078 prepareKeyStatement . AppendLine ( " ) TableName" ) ;
20792079 prepareKeyStatement . AppendLine ( " ) AS A CROSS APPLY BUSINESS_KEY_ATTRIBUTE_XML.nodes('/M') AS Split(a)" ) ;
2080- prepareKeyStatement . AppendLine ( "" ) ;
20812080 prepareKeyStatement . AppendLine ( " WHERE BUSINESS_KEY_ATTRIBUTE <> 'N/A' AND A.BUSINESS_KEY_ATTRIBUTE != ''" ) ;
20822081 prepareKeyStatement . AppendLine ( ") pivotsub" ) ;
20832082 prepareKeyStatement . AppendLine ( "LEFT OUTER JOIN" ) ;
@@ -2261,40 +2260,57 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
22612260 prepareHubLnkXrefStatement . AppendLine ( " lnk_tbl.LINK_TABLE_ID," ) ;
22622261 prepareHubLnkXrefStatement . AppendLine ( " lnk_tbl.LINK_TABLE_NAME," ) ;
22632262 prepareHubLnkXrefStatement . AppendLine ( " lnk_hubkey_order.HUB_KEY_ORDER AS HUB_ORDER," ) ;
2264- prepareHubLnkXrefStatement . AppendLine ( " lnk_hubkey_order.BUSINESS_KEY_PART AS BUSINESS_KEY_DEFINITION" ) ;
2265- prepareHubLnkXrefStatement . AppendLine ( "FROM MD_TABLE_MAPPING lnk --driving table for links(filtered on links only).The link will get the associated Hubs added" ) ;
2266- prepareHubLnkXrefStatement . AppendLine ( "JOIN" ) ;
2267- prepareHubLnkXrefStatement . AppendLine ( "-- This join adds the Hubs and their order by pivoting on the full business key" ) ;
2263+ prepareHubLnkXrefStatement . AppendLine ( " lnk_target_model.HUB_TARGET_KEY_NAME_IN_LINK" ) ;
2264+ prepareHubLnkXrefStatement . AppendLine ( "FROM" ) ;
2265+ prepareHubLnkXrefStatement . AppendLine ( "-- This base query adds the Link and its Hubs and their order by pivoting on the full business key" ) ;
22682266 prepareHubLnkXrefStatement . AppendLine ( "(" ) ;
22692267 prepareHubLnkXrefStatement . AppendLine ( " SELECT" ) ;
22702268 prepareHubLnkXrefStatement . AppendLine ( " INTEGRATION_AREA_TABLE," ) ;
2269+ prepareHubLnkXrefStatement . AppendLine ( " STAGING_AREA_TABLE," ) ;
22712270 prepareHubLnkXrefStatement . AppendLine ( " BUSINESS_KEY_ATTRIBUTE," ) ;
2272- prepareHubLnkXrefStatement . AppendLine ( " LTRIM(Split.a.value('.', 'VARCHAR(100 )')) AS BUSINESS_KEY_PART," ) ;
2271+ prepareHubLnkXrefStatement . AppendLine ( " LTRIM(Split.a.value('.', 'VARCHAR(4000 )')) AS BUSINESS_KEY_PART," ) ;
22732272 prepareHubLnkXrefStatement . AppendLine ( " ROW_NUMBER() OVER(PARTITION BY INTEGRATION_AREA_TABLE ORDER BY INTEGRATION_AREA_TABLE) AS HUB_KEY_ORDER" ) ;
22742273 prepareHubLnkXrefStatement . AppendLine ( " FROM" ) ;
22752274 prepareHubLnkXrefStatement . AppendLine ( " (" ) ;
2276- prepareHubLnkXrefStatement . AppendLine ( " SELECT INTEGRATION_AREA_TABLE, BUSINESS_KEY_ATTRIBUTE, CAST('<M>' + REPLACE(BUSINESS_KEY_ATTRIBUTE, ',', '</M><M>') + '</M>' AS XML) AS BUSINESS_KEY_SOURCE_XML" ) ;
2275+ prepareHubLnkXrefStatement . AppendLine ( " SELECT" ) ;
2276+ prepareHubLnkXrefStatement . AppendLine ( " INTEGRATION_AREA_TABLE," ) ;
2277+ prepareHubLnkXrefStatement . AppendLine ( " STAGING_AREA_TABLE," ) ;
2278+ prepareHubLnkXrefStatement . AppendLine ( " ROW_NUMBER() OVER(PARTITION BY INTEGRATION_AREA_TABLE ORDER BY INTEGRATION_AREA_TABLE) AS LINK_ORDER," ) ;
2279+ prepareHubLnkXrefStatement . AppendLine ( " BUSINESS_KEY_ATTRIBUTE, CAST('<M>' + REPLACE(BUSINESS_KEY_ATTRIBUTE, ',', '</M><M>') + '</M>' AS XML) AS BUSINESS_KEY_SOURCE_XML" ) ;
22772280 prepareHubLnkXrefStatement . AppendLine ( " FROM MD_TABLE_MAPPING" ) ;
2278- prepareHubLnkXrefStatement . AppendLine ( " WHERE INTEGRATION_AREA_TABLE LIKE 'LNK%'" ) ;
2281+ prepareHubLnkXrefStatement . AppendLine ( " WHERE [INTEGRATION_AREA_TABLE] LIKE '" + lnkTablePrefix + "'" ) ;
2282+ prepareHubLnkXrefStatement . AppendLine ( " AND [VERSION_ID] = " + versionId ) ;
2283+ prepareHubLnkXrefStatement . AppendLine ( " AND [GENERATE_INDICATOR] = 'Y'" ) ;
22792284 prepareHubLnkXrefStatement . AppendLine ( " ) AS A CROSS APPLY BUSINESS_KEY_SOURCE_XML.nodes('/M') AS Split(a)" ) ;
2280- prepareHubLnkXrefStatement . AppendLine ( ") lnk_hubkey_order ON lnk.INTEGRATION_AREA_TABLE = lnk_hubkey_order.INTEGRATION_AREA_TABLE" ) ;
2285+ prepareHubLnkXrefStatement . AppendLine ( " WHERE LINK_ORDER=1 --Any link will do, the order of the Hub keys in the Link will always be the same" ) ;
2286+ prepareHubLnkXrefStatement . AppendLine ( ") lnk_hubkey_order" ) ;
2287+
2288+ prepareHubLnkXrefStatement . AppendLine ( "-- Adding the information required for the target model in the query" ) ;
2289+ prepareHubLnkXrefStatement . AppendLine ( "JOIN " ) ;
2290+ prepareHubLnkXrefStatement . AppendLine ( "(" ) ;
2291+ prepareHubLnkXrefStatement . AppendLine ( "SELECT " ) ;
2292+ prepareHubLnkXrefStatement . AppendLine ( " TABLE_NAME AS LINK_TABLE_NAME," ) ;
2293+ prepareHubLnkXrefStatement . AppendLine ( " COLUMN_NAME AS HUB_TARGET_KEY_NAME_IN_LINK ," ) ;
2294+ prepareHubLnkXrefStatement . AppendLine ( " ROW_NUMBER() OVER(PARTITION BY TABLE_NAME ORDER BY ORDINAL_POSITION) AS LINK_ORDER" ) ;
2295+ prepareHubLnkXrefStatement . AppendLine ( "FROM " + integrationDatabase + ".INFORMATION_SCHEMA.COLUMNS" ) ;
2296+ prepareHubLnkXrefStatement . AppendLine ( "WHERE [ORDINAL_POSITION]>4" ) ;
2297+ prepareHubLnkXrefStatement . AppendLine ( "AND [TABLE_NAME] LIKE '" + lnkTablePrefix + "'" ) ;
2298+ prepareHubLnkXrefStatement . AppendLine ( ") lnk_target_model" ) ;
2299+ prepareHubLnkXrefStatement . AppendLine ( "ON lnk_hubkey_order.INTEGRATION_AREA_TABLE = lnk_target_model.LINK_TABLE_NAME" ) ;
2300+ prepareHubLnkXrefStatement . AppendLine ( "AND lnk_hubkey_order.HUB_KEY_ORDER = lnk_target_model.LINK_ORDER" ) ;
22812301
22822302 prepareHubLnkXrefStatement . AppendLine ( "--Adding the Hub mapping data to get the business keys" ) ;
22832303 prepareHubLnkXrefStatement . AppendLine ( "JOIN MD_TABLE_MAPPING hub" ) ;
2284- prepareHubLnkXrefStatement . AppendLine ( " ON lnk.STAGING_AREA_TABLE = hub.STAGING_AREA_TABLE" ) ;
2285- prepareHubLnkXrefStatement . AppendLine ( " AND lnk_hubkey_order.BUSINESS_KEY_PART = hub.BUSINESS_KEY_ATTRIBUTE-- This condition is required to remove the redundant rows caused by the Link key pivoting" ) ;
2304+ prepareHubLnkXrefStatement . AppendLine ( " ON lnk_hubkey_order.[STAGING_AREA_TABLE] = hub.STAGING_AREA_TABLE" ) ;
2305+ prepareHubLnkXrefStatement . AppendLine ( " AND lnk_hubkey_order.[BUSINESS_KEY_PART] = hub.BUSINESS_KEY_ATTRIBUTE-- This condition is required to remove the redundant rows caused by the Link key pivoting" ) ;
2306+ prepareHubLnkXrefStatement . AppendLine ( " AND hub.[INTEGRATION_AREA_TABLE] LIKE '" + hubTablePrefix + "'" ) ;
2307+ prepareHubLnkXrefStatement . AppendLine ( " AND hub.[VERSION_ID] = " + versionId ) ;
2308+ prepareHubLnkXrefStatement . AppendLine ( " AND hub.[GENERATE_INDICATOR] = 'Y'" ) ;
2309+ prepareHubLnkXrefStatement . AppendLine ( "--Lastly adding the IDs for the Hubs and Links" ) ;
22862310 prepareHubLnkXrefStatement . AppendLine ( "JOIN dbo.MD_HUB hub_tbl" ) ;
22872311 prepareHubLnkXrefStatement . AppendLine ( " ON hub.INTEGRATION_AREA_TABLE = hub_tbl.HUB_TABLE_NAME" ) ;
22882312 prepareHubLnkXrefStatement . AppendLine ( "JOIN dbo.MD_LINK lnk_tbl" ) ;
2289- prepareHubLnkXrefStatement . AppendLine ( " ON lnk.INTEGRATION_AREA_TABLE = lnk_tbl.LINK_TABLE_NAME" ) ;
2290- prepareHubLnkXrefStatement . AppendLine ( "JOIN dbo.MD_STG stg_tbl" ) ;
2291- prepareHubLnkXrefStatement . AppendLine ( " ON lnk.STAGING_AREA_TABLE = stg_tbl.STAGING_AREA_TABLE_NAME" ) ;
2292- prepareHubLnkXrefStatement . AppendLine ( " AND hub.STAGING_AREA_TABLE = stg_tbl.STAGING_AREA_TABLE_NAME" ) ;
2293- prepareHubLnkXrefStatement . AppendLine ( "WHERE lnk.INTEGRATION_AREA_TABLE LIKE '" + lnkTablePrefix + "' and hub.INTEGRATION_AREA_TABLE LIKE '" + hubTablePrefix + "'" ) ;
2294- prepareHubLnkXrefStatement . AppendLine ( "AND hub.VERSION_ID = " + versionId ) ;
2295- prepareHubLnkXrefStatement . AppendLine ( "AND lnk.VERSION_ID = " + versionId ) ;
2296- prepareHubLnkXrefStatement . AppendLine ( "AND lnk.[GENERATE_INDICATOR] = 'Y'" ) ;
2297- prepareHubLnkXrefStatement . AppendLine ( "AND hub.[GENERATE_INDICATOR] = 'Y'" ) ;
2313+ prepareHubLnkXrefStatement . AppendLine ( " ON lnk_hubkey_order.INTEGRATION_AREA_TABLE = lnk_tbl.LINK_TABLE_NAME" ) ;
22982314
22992315 var listHlXref = GetDataTable ( ref connOmd , prepareHubLnkXrefStatement . ToString ( ) ) ;
23002316
@@ -2305,12 +2321,10 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
23052321 _alert . SetTextLogging ( "--> Processing the " + tableName [ "HUB_TABLE_NAME" ] + " / " + tableName [ "LINK_TABLE_NAME" ] + " relationship\r \n " ) ;
23062322
23072323 var insertHlXrefStatement = new StringBuilder ( ) ;
2308- var businessKeyDefinition = tableName [ "BUSINESS_KEY_DEFINITION" ] ;
2309- businessKeyDefinition = businessKeyDefinition . ToString ( ) . Replace ( "'" , "''" ) ;
23102324
23112325 insertHlXrefStatement . AppendLine ( "INSERT INTO [MD_HUB_LINK_XREF]" ) ;
2312- insertHlXrefStatement . AppendLine ( "([HUB_TABLE_ID], [LINK_TABLE_ID], [HUB_ORDER], [BUSINESS_KEY_DEFINITION ])" ) ;
2313- insertHlXrefStatement . AppendLine ( "VALUES ('" + tableName [ "HUB_TABLE_ID" ] + "','" + tableName [ "LINK_TABLE_ID" ] + "','" + tableName [ "HUB_ORDER" ] + "','" + businessKeyDefinition + "')" ) ;
2326+ insertHlXrefStatement . AppendLine ( "([HUB_TABLE_ID], [LINK_TABLE_ID], [HUB_ORDER], [HUB_TARGET_KEY_NAME_IN_LINK ])" ) ;
2327+ insertHlXrefStatement . AppendLine ( "VALUES ('" + tableName [ "HUB_TABLE_ID" ] + "','" + tableName [ "LINK_TABLE_ID" ] + "','" + tableName [ "HUB_ORDER" ] + "','" + tableName [ "HUB_TARGET_KEY_NAME_IN_LINK" ] + "')" ) ;
23142328
23152329 var command = new SqlCommand ( insertHlXrefStatement . ToString ( ) , connection ) ;
23162330
@@ -2359,10 +2373,11 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
23592373 preparestgLnkXrefStatement . AppendLine ( " lnk_tbl.LINK_TABLE_NAME," ) ;
23602374 preparestgLnkXrefStatement . AppendLine ( " stg_tbl.STAGING_AREA_TABLE_ID," ) ;
23612375 preparestgLnkXrefStatement . AppendLine ( " stg_tbl.STAGING_AREA_TABLE_NAME," ) ;
2362- preparestgLnkXrefStatement . AppendLine ( " lnk.FILTER_CRITERIA" ) ;
2363- preparestgLnkXrefStatement . AppendLine ( "FROM[dbo].MD_TABLE_MAPPING lnk" ) ;
2364- preparestgLnkXrefStatement . AppendLine ( "JOIN dbo.MD_LINK lnk_tbl ON lnk.INTEGRATION_AREA_TABLE = lnk_tbl.LINK_TABLE_NAME" ) ;
2365- preparestgLnkXrefStatement . AppendLine ( "JOIN dbo.MD_STG stg_tbl ON lnk.STAGING_AREA_TABLE = stg_tbl.STAGING_AREA_TABLE_NAME" ) ;
2376+ preparestgLnkXrefStatement . AppendLine ( " lnk.FILTER_CRITERIA," ) ;
2377+ preparestgLnkXrefStatement . AppendLine ( " lnk.BUSINESS_KEY_ATTRIBUTE" ) ;
2378+ preparestgLnkXrefStatement . AppendLine ( "FROM [dbo].[MD_TABLE_MAPPING] lnk" ) ;
2379+ preparestgLnkXrefStatement . AppendLine ( "JOIN [dbo].[MD_LINK] lnk_tbl ON lnk.INTEGRATION_AREA_TABLE = lnk_tbl.LINK_TABLE_NAME" ) ;
2380+ preparestgLnkXrefStatement . AppendLine ( "JOIN [dbo].[MD_STG] stg_tbl ON lnk.STAGING_AREA_TABLE = stg_tbl.STAGING_AREA_TABLE_NAME" ) ;
23662381 preparestgLnkXrefStatement . AppendLine ( "WHERE lnk.INTEGRATION_AREA_TABLE like '" + lnkTablePrefix + "'" ) ;
23672382 preparestgLnkXrefStatement . AppendLine ( "AND lnk.VERSION_ID = " + versionId ) ;
23682383 preparestgLnkXrefStatement . AppendLine ( "AND [GENERATE_INDICATOR] = 'Y'" ) ;
@@ -2380,9 +2395,12 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
23802395 var filterCriterion = tableName [ "FILTER_CRITERIA" ] . ToString ( ) ;
23812396 filterCriterion = filterCriterion . Replace ( "'" , "''" ) ;
23822397
2398+ var businessKeyDefinition = tableName [ "BUSINESS_KEY_ATTRIBUTE" ] . ToString ( ) ;
2399+ businessKeyDefinition = businessKeyDefinition . Replace ( "'" , "''" ) ;
2400+
23832401 insertStgLinkStatement . AppendLine ( "INSERT INTO [MD_STG_LINK_XREF]" ) ;
2384- insertStgLinkStatement . AppendLine ( "([STAGING_AREA_TABLE_ID], [LINK_TABLE_ID], [FILTER_CRITERIA])" ) ;
2385- insertStgLinkStatement . AppendLine ( "VALUES ('" + tableName [ "STAGING_AREA_TABLE_ID" ] + "','" + tableName [ "LINK_TABLE_ID" ] + "','" + filterCriterion + "')" ) ;
2402+ insertStgLinkStatement . AppendLine ( "([STAGING_AREA_TABLE_ID], [LINK_TABLE_ID], [FILTER_CRITERIA], [BUSINESS_KEY_DEFINITION] )" ) ;
2403+ insertStgLinkStatement . AppendLine ( "VALUES ('" + tableName [ "STAGING_AREA_TABLE_ID" ] + "','" + tableName [ "LINK_TABLE_ID" ] + "','" + filterCriterion + "','" + businessKeyDefinition + "')" ) ;
23862404
23872405 var command = new SqlCommand ( insertStgLinkStatement . ToString ( ) , connection ) ;
23882406
0 commit comments