Skip to content

Commit 5e98cb2

Browse files
committed
Merge branch 'master' of https://github.com/scott-diprose/TEAM
2 parents aec4a5b + 6673f8e commit 5e98cb2

File tree

3 files changed

+117
-89
lines changed

3 files changed

+117
-89
lines changed

TEAM/Form_Manage_Metadata.cs

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

Comments
 (0)