@@ -2056,7 +2056,18 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
20562056 prepareKeyStatement . AppendLine ( " ROW_NUMBER() OVER(PARTITION BY STAGING_AREA_TABLE, INTEGRATION_AREA_TABLE, BUSINESS_KEY_ATTRIBUTE ORDER BY STAGING_AREA_TABLE, INTEGRATION_AREA_TABLE, BUSINESS_KEY_ATTRIBUTE ASC) AS COMPONENT_ORDER" ) ;
20572057 prepareKeyStatement . AppendLine ( " FROM" ) ;
20582058 prepareKeyStatement . AppendLine ( " (" ) ;
2059- prepareKeyStatement . AppendLine ( " SELECT STAGING_AREA_TABLE, INTEGRATION_AREA_TABLE, BUSINESS_KEY_ATTRIBUTE, CONVERT(XML, '<M>' + REPLACE(BUSINESS_KEY_ATTRIBUTE, ',', '</M><M>') + '</M>') AS BUSINESS_KEY_ATTRIBUTE_XML" ) ;
2059+
2060+ // Change to move from comma separate to semicolon separation for composite keys
2061+ prepareKeyStatement . AppendLine ( " SELECT" ) ;
2062+ prepareKeyStatement . AppendLine ( " STAGING_AREA_TABLE, " ) ;
2063+ prepareKeyStatement . AppendLine ( " INTEGRATION_AREA_TABLE, " ) ;
2064+ prepareKeyStatement . AppendLine ( " BUSINESS_KEY_ATTRIBUTE," ) ;
2065+ prepareKeyStatement . AppendLine ( " CASE SUBSTRING(BUSINESS_KEY_ATTRIBUTE, 0, CHARINDEX('(', BUSINESS_KEY_ATTRIBUTE))" ) ;
2066+ prepareKeyStatement . AppendLine ( " WHEN 'COMPOSITE' THEN CONVERT(XML, '<M>' + REPLACE(BUSINESS_KEY_ATTRIBUTE, ';', '</M><M>') + '</M>') " ) ;
2067+ prepareKeyStatement . AppendLine ( " ELSE CONVERT(XML, '<M>' + REPLACE(BUSINESS_KEY_ATTRIBUTE, ',', '</M><M>') + '</M>') " ) ;
2068+ prepareKeyStatement . AppendLine ( " END AS BUSINESS_KEY_ATTRIBUTE_XML" ) ;
2069+ // End of composite key change
2070+
20602071 prepareKeyStatement . AppendLine ( " FROM" ) ;
20612072 prepareKeyStatement . AppendLine ( " (" ) ;
20622073 prepareKeyStatement . AppendLine ( " SELECT DISTINCT STAGING_AREA_TABLE, INTEGRATION_AREA_TABLE, LTRIM(RTRIM(BUSINESS_KEY_ATTRIBUTE)) AS BUSINESS_KEY_ATTRIBUTE" ) ;
@@ -2244,49 +2255,48 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
22442255 {
22452256 var prepareHubLnkXrefStatement = new StringBuilder ( ) ;
22462257
2247- prepareHubLnkXrefStatement . AppendLine ( "SELECT DISTINCT" ) ;
2248- prepareHubLnkXrefStatement . AppendLine ( " hub_tbl.HUB_TABLE_ID," ) ;
2249- prepareHubLnkXrefStatement . AppendLine ( " hub_tbl.HUB_TABLE_NAME," ) ;
2250- prepareHubLnkXrefStatement . AppendLine ( " lnk_tbl.LINK_TABLE_ID," ) ;
2251- prepareHubLnkXrefStatement . AppendLine ( " lnk_tbl.LINK_TABLE_NAME" ) ;
2252- prepareHubLnkXrefStatement . AppendLine ( "FROM MD_TABLE_MAPPING lnk" ) ;
2258+ prepareHubLnkXrefStatement . AppendLine ( "SELECT" ) ;
2259+ prepareHubLnkXrefStatement . AppendLine ( " hub_tbl.HUB_TABLE_ID," ) ;
2260+ prepareHubLnkXrefStatement . AppendLine ( " hub_tbl.HUB_TABLE_NAME," ) ;
2261+ prepareHubLnkXrefStatement . AppendLine ( " lnk_tbl.LINK_TABLE_ID," ) ;
2262+ prepareHubLnkXrefStatement . AppendLine ( " lnk_tbl.LINK_TABLE_NAME," ) ;
2263+ 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" ) ;
2268+ prepareHubLnkXrefStatement . AppendLine ( "(" ) ;
2269+ prepareHubLnkXrefStatement . AppendLine ( " SELECT" ) ;
2270+ prepareHubLnkXrefStatement . AppendLine ( " INTEGRATION_AREA_TABLE," ) ;
2271+ prepareHubLnkXrefStatement . AppendLine ( " BUSINESS_KEY_ATTRIBUTE," ) ;
2272+ prepareHubLnkXrefStatement . AppendLine ( " LTRIM(Split.a.value('.', 'VARCHAR(100)')) AS BUSINESS_KEY_PART," ) ;
2273+ prepareHubLnkXrefStatement . AppendLine ( " ROW_NUMBER() OVER(PARTITION BY INTEGRATION_AREA_TABLE ORDER BY INTEGRATION_AREA_TABLE) AS HUB_KEY_ORDER" ) ;
2274+ prepareHubLnkXrefStatement . AppendLine ( " FROM" ) ;
2275+ 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" ) ;
2277+ prepareHubLnkXrefStatement . AppendLine ( " FROM MD_TABLE_MAPPING" ) ;
2278+ prepareHubLnkXrefStatement . AppendLine ( " WHERE INTEGRATION_AREA_TABLE LIKE 'LNK%'" ) ;
2279+ 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" ) ;
2281+
2282+ prepareHubLnkXrefStatement . AppendLine ( "--Adding the Hub mapping data to get the business keys" ) ;
22532283 prepareHubLnkXrefStatement . AppendLine ( "JOIN MD_TABLE_MAPPING hub" ) ;
22542284 prepareHubLnkXrefStatement . AppendLine ( " ON lnk.STAGING_AREA_TABLE = hub.STAGING_AREA_TABLE" ) ;
2255- prepareHubLnkXrefStatement . AppendLine ( " AND NOT EXISTS(" ) ;
2256- prepareHubLnkXrefStatement . AppendLine ( " SELECT *" ) ;
2257- prepareHubLnkXrefStatement . AppendLine ( " FROM" ) ;
2258- prepareHubLnkXrefStatement . AppendLine ( " (" ) ;
2259- prepareHubLnkXrefStatement . AppendLine ( " SELECT ltrim(rtrim(BUSINESS_KEY_ATTRIBUTE.value('.', 'VARCHAR(MAX)'))) as BUSINESS_KEY_ATTRIBUTE" ) ;
2260- prepareHubLnkXrefStatement . AppendLine ( " FROM(" ) ;
2261- prepareHubLnkXrefStatement . AppendLine ( " SELECT CONVERT(XML, '<M>' + REPLACE(hub.BUSINESS_KEY_ATTRIBUTE, ',', '</M><M>') + '</M>') as BUSINESS_KEY_ATTRIBUTE_XML" ) ;
2262- prepareHubLnkXrefStatement . AppendLine ( " )A" ) ;
2263- prepareHubLnkXrefStatement . AppendLine ( " CROSS APPLY BUSINESS_KEY_ATTRIBUTE_XML.nodes('/M') BUSINESS_KEY_ATTRIBUTES(BUSINESS_KEY_ATTRIBUTE)" ) ;
2264- prepareHubLnkXrefStatement . AppendLine ( " )hub_key_columns" ) ;
2265- prepareHubLnkXrefStatement . AppendLine ( " LEFT JOIN" ) ;
2266- prepareHubLnkXrefStatement . AppendLine ( " (" ) ;
2267- prepareHubLnkXrefStatement . AppendLine ( " SELECT ltrim(rtrim(BUSINESS_KEY_ATTRIBUTE.value('.', 'VARCHAR(MAX)'))) as BUSINESS_KEY_ATTRIBUTE" ) ;
2268- prepareHubLnkXrefStatement . AppendLine ( " FROM(" ) ;
2269- prepareHubLnkXrefStatement . AppendLine ( " SELECT CONVERT(XML, '<M>' + REPLACE(lnk.BUSINESS_KEY_ATTRIBUTE, ',', '</M><M>') + '</M>') as BUSINESS_KEY_ATTRIBUTE_XML" ) ;
2270- prepareHubLnkXrefStatement . AppendLine ( " )A" ) ;
2271- prepareHubLnkXrefStatement . AppendLine ( " CROSS APPLY BUSINESS_KEY_ATTRIBUTE_XML.nodes('/M') BUSINESS_KEY_ATTRIBUTES(BUSINESS_KEY_ATTRIBUTE)" ) ;
2272- prepareHubLnkXrefStatement . AppendLine ( " )lnk_key_columns" ) ;
2273- prepareHubLnkXrefStatement . AppendLine ( " ON hub_key_columns.BUSINESS_KEY_ATTRIBUTE = lnk_key_columns.BUSINESS_KEY_ATTRIBUTE" ) ;
2274- prepareHubLnkXrefStatement . AppendLine ( " WHERE lnk_key_columns.BUSINESS_KEY_ATTRIBUTE is null" ) ;
2275- prepareHubLnkXrefStatement . AppendLine ( " )" ) ;
2276- prepareHubLnkXrefStatement . AppendLine ( " JOIN dbo.MD_HUB hub_tbl" ) ;
2277- prepareHubLnkXrefStatement . AppendLine ( " ON hub.INTEGRATION_AREA_TABLE = hub_tbl.HUB_TABLE_NAME" ) ;
2278- prepareHubLnkXrefStatement . AppendLine ( " JOIN dbo.MD_LINK lnk_tbl" ) ;
2279- prepareHubLnkXrefStatement . AppendLine ( " ON lnk.INTEGRATION_AREA_TABLE = lnk_tbl.LINK_TABLE_NAME" ) ;
2280- prepareHubLnkXrefStatement . AppendLine ( " JOIN dbo.MD_STG stg_tbl" ) ;
2281- prepareHubLnkXrefStatement . AppendLine ( " ON lnk.STAGING_AREA_TABLE = stg_tbl.STAGING_AREA_TABLE_NAME" ) ;
2282- prepareHubLnkXrefStatement . AppendLine ( " AND hub.STAGING_AREA_TABLE = stg_tbl.STAGING_AREA_TABLE_NAME" ) ;
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" ) ;
2286+ prepareHubLnkXrefStatement . AppendLine ( "JOIN dbo.MD_HUB hub_tbl" ) ;
2287+ prepareHubLnkXrefStatement . AppendLine ( " ON hub.INTEGRATION_AREA_TABLE = hub_tbl.HUB_TABLE_NAME" ) ;
2288+ 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" ) ;
22832293 prepareHubLnkXrefStatement . AppendLine ( "WHERE lnk.INTEGRATION_AREA_TABLE LIKE '" + lnkTablePrefix + "' and hub.INTEGRATION_AREA_TABLE LIKE '" + hubTablePrefix + "'" ) ;
22842294 prepareHubLnkXrefStatement . AppendLine ( "AND hub.VERSION_ID = " + versionId ) ;
22852295 prepareHubLnkXrefStatement . AppendLine ( "AND lnk.VERSION_ID = " + versionId ) ;
22862296 prepareHubLnkXrefStatement . AppendLine ( "AND lnk.[GENERATE_INDICATOR] = 'Y'" ) ;
22872297 prepareHubLnkXrefStatement . AppendLine ( "AND hub.[GENERATE_INDICATOR] = 'Y'" ) ;
22882298
2289- var listHlXref = GetDataTable ( ref connOmd , prepareHubLnkXrefStatement . ToString ( ) ) ;
2299+ var listHlXref = GetDataTable ( ref connOmd , prepareHubLnkXrefStatement . ToString ( ) ) ;
22902300
22912301 foreach ( DataRow tableName in listHlXref . Rows )
22922302 {
@@ -2295,10 +2305,12 @@ private void backgroundWorker_DoWorkMetadataActivation(object sender, DoWorkEven
22952305 _alert . SetTextLogging ( "--> Processing the " + tableName [ "HUB_TABLE_NAME" ] + " / " + tableName [ "LINK_TABLE_NAME" ] + " relationship\r \n " ) ;
22962306
22972307 var insertHlXrefStatement = new StringBuilder ( ) ;
2308+ var businessKeyDefinition = tableName [ "BUSINESS_KEY_DEFINITION" ] ;
2309+ businessKeyDefinition = businessKeyDefinition . ToString ( ) . Replace ( "'" , "''" ) ;
22982310
22992311 insertHlXrefStatement . AppendLine ( "INSERT INTO [MD_HUB_LINK_XREF]" ) ;
2300- insertHlXrefStatement . AppendLine ( "([HUB_TABLE_ID], [LINK_TABLE_ID])" ) ;
2301- insertHlXrefStatement . AppendLine ( "VALUES ('" + tableName [ "HUB_TABLE_ID" ] + "','" + tableName [ "LINK_TABLE_ID" ] + "')" ) ;
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 + "' )") ;
23022314
23032315 var command = new SqlCommand ( insertHlXrefStatement . ToString ( ) , connection ) ;
23042316
0 commit comments