Skip to content

Commit e72f55f

Browse files
committed
Hub order changes - part 2
1 parent 5e98cb2 commit e72f55f

File tree

4 files changed

+216
-142
lines changed

4 files changed

+216
-142
lines changed

TEAM/Form_Manage_Metadata.cs

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)