feat(database): split MisData into archival tables
Split MisData table into MisData_Curr (Status='Current') and MisData_Hist (Status='BackLevel') following existing archival pattern. - Add MisData_Curr and MisData_Hist table scripts - Create MisData view (UNION ALL) for backward compatibility - Update production and DEV pipeline configurations - Update unit tests for new table count (22 tables) - Update database documentation
This commit is contained in:
@@ -2,8 +2,8 @@
|
|||||||
"settings": {
|
"settings": {
|
||||||
"sizeCategories": {
|
"sizeCategories": {
|
||||||
"small": ["Branch", "OrgHierarchy", "WorkCenter", "ProfitCenter"],
|
"small": ["Branch", "OrgHierarchy", "WorkCenter", "ProfitCenter"],
|
||||||
"medium": ["JdeUser", "FunctionCode", "Item", "RouteMaster"],
|
"medium": ["JdeUser", "FunctionCode", "Item", "RouteMaster", "MisData_Curr"],
|
||||||
"large": ["Lot", "MisData", "WorkOrder_Curr", "WorkOrder_Hist", "LotUsage_Hist", "WorkOrderComponent_Hist"],
|
"large": ["Lot", "MisData_Hist", "WorkOrder_Curr", "WorkOrder_Hist", "LotUsage_Hist", "WorkOrderComponent_Hist"],
|
||||||
"veryLarge": ["WorkOrderStep_Hist", "WorkOrderComponent_Curr", "WorkOrderRouting", "LotUsage_Curr", "WorkOrderStep_Curr", "WorkOrderTime_Hist", "WorkOrderTime_Curr"]
|
"veryLarge": ["WorkOrderStep_Hist", "WorkOrderComponent_Curr", "WorkOrderRouting", "LotUsage_Curr", "WorkOrderStep_Curr", "WorkOrderTime_Hist", "WorkOrderTime_Curr"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -44,9 +44,13 @@
|
|||||||
"source": { "fileName": "lot.pb.zstd" },
|
"source": { "fileName": "lot.pb.zstd" },
|
||||||
"destination": { "table": "Lot" }
|
"destination": { "table": "Lot" }
|
||||||
},
|
},
|
||||||
"MisData": {
|
"MisData_Curr": {
|
||||||
"source": { "fileName": "misdata.pb.zstd" },
|
"source": { "fileName": "misdata_curr.pb.zstd" },
|
||||||
"destination": { "table": "MisData" }
|
"destination": { "table": "MisData_Curr" }
|
||||||
|
},
|
||||||
|
"MisData_Hist": {
|
||||||
|
"source": { "fileName": "misdata_hist.pb.zstd" },
|
||||||
|
"destination": { "table": "MisData_Hist" }
|
||||||
},
|
},
|
||||||
"WorkOrder_Curr": {
|
"WorkOrder_Curr": {
|
||||||
"source": { "fileName": "workorder_curr.pb.zstd" },
|
"source": { "fileName": "workorder_curr.pb.zstd" },
|
||||||
|
|||||||
@@ -173,11 +173,11 @@
|
|||||||
"excludeFromUpdate": ["Code", "LastUpdateDt"]
|
"excludeFromUpdate": ["Code", "LastUpdateDt"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MisData": {
|
"MisData_Curr": {
|
||||||
"source": {
|
"source": {
|
||||||
"connection": "cms",
|
"connection": "cms",
|
||||||
"query": "SELECT DISTINCT mis.P_PART_NUMBER AS ItemNumber, mis.P_OPERATION_NUMBER AS SequenceNumber, item.PITEM_ID AS MISNumber, itemrev.PITEM_REVISION_ID AS RevID, TRIM(mis.P_SITE) AS BranchCode, zim_test_details.P_SEQ_NUMBER AS CharNumber, zim_test_details.P_TEST_DESC AS TestDescription, zim_test_details.P_SAMPL_TYPE AS SamplingType, zim_test_details.P_SAMPL_VALUE AS SamplingValue, zim_test_details.P_TOOLS AS ToolsGauges, zim_test_details.P_WORK_INTR AS WorkInstructions, Status.PNAME AS Status, Status.PDATE_RELEASED AS ReleaseDate FROM INFODBA.PITEM item INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU) INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID) INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID) INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU) INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID) INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID) INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID) INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID) INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0) INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID) WHERE Status.PNAME IN ('Current', 'BackLevel') AND Status.PDATE_RELEASED >= :lastUpdateDT",
|
"query": "SELECT DISTINCT mis.P_PART_NUMBER AS ItemNumber, mis.P_OPERATION_NUMBER AS SequenceNumber, item.PITEM_ID AS MISNumber, itemrev.PITEM_REVISION_ID AS RevID, TRIM(mis.P_SITE) AS BranchCode, zim_test_details.P_SEQ_NUMBER AS CharNumber, zim_test_details.P_TEST_DESC AS TestDescription, zim_test_details.P_SAMPL_TYPE AS SamplingType, zim_test_details.P_SAMPL_VALUE AS SamplingValue, zim_test_details.P_TOOLS AS ToolsGauges, zim_test_details.P_WORK_INTR AS WorkInstructions, Status.PNAME AS Status, Status.PDATE_RELEASED AS ReleaseDate FROM INFODBA.PITEM item INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU) INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID) INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID) INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU) INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID) INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID) INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID) INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID) INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0) INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID) WHERE Status.PNAME = 'Current' AND Status.PDATE_RELEASED >= :lastUpdateDT",
|
||||||
"massQuery": "SELECT DISTINCT mis.P_PART_NUMBER AS ItemNumber, mis.P_OPERATION_NUMBER AS SequenceNumber, item.PITEM_ID AS MISNumber, itemrev.PITEM_REVISION_ID AS RevID, TRIM(mis.P_SITE) AS BranchCode, zim_test_details.P_SEQ_NUMBER AS CharNumber, zim_test_details.P_TEST_DESC AS TestDescription, zim_test_details.P_SAMPL_TYPE AS SamplingType, zim_test_details.P_SAMPL_VALUE AS SamplingValue, zim_test_details.P_TOOLS AS ToolsGauges, zim_test_details.P_WORK_INTR AS WorkInstructions, Status.PNAME AS Status, Status.PDATE_RELEASED AS ReleaseDate FROM INFODBA.PITEM item INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU) INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID) INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID) INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU) INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID) INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID) INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID) INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID) INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0) INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID) WHERE Status.PNAME IN ('Current', 'BackLevel')",
|
"massQuery": "SELECT DISTINCT mis.P_PART_NUMBER AS ItemNumber, mis.P_OPERATION_NUMBER AS SequenceNumber, item.PITEM_ID AS MISNumber, itemrev.PITEM_REVISION_ID AS RevID, TRIM(mis.P_SITE) AS BranchCode, zim_test_details.P_SEQ_NUMBER AS CharNumber, zim_test_details.P_TEST_DESC AS TestDescription, zim_test_details.P_SAMPL_TYPE AS SamplingType, zim_test_details.P_SAMPL_VALUE AS SamplingValue, zim_test_details.P_TOOLS AS ToolsGauges, zim_test_details.P_WORK_INTR AS WorkInstructions, Status.PNAME AS Status, Status.PDATE_RELEASED AS ReleaseDate FROM INFODBA.PITEM item INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU) INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID) INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID) INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU) INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID) INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID) INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID) INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID) INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0) INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID) WHERE Status.PNAME = 'Current'",
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"lastUpdateDT": { "name": ":lastUpdateDT", "format": null, "source": "offset" }
|
"lastUpdateDT": { "name": ":lastUpdateDT", "format": null, "source": "offset" }
|
||||||
}
|
}
|
||||||
@@ -188,13 +188,37 @@
|
|||||||
"hourly": { "enabled": false }
|
"hourly": { "enabled": false }
|
||||||
},
|
},
|
||||||
"destination": {
|
"destination": {
|
||||||
"table": "MisData",
|
"table": "MisData_Curr",
|
||||||
"matchColumns": ["ItemNumber", "BranchCode", "SequenceNumber", "MisNumber", "CharNumber"]
|
"matchColumns": ["ItemNumber", "BranchCode", "SequenceNumber", "MisNumber", "CharNumber"]
|
||||||
},
|
},
|
||||||
"postScripts": [
|
"postScripts": [
|
||||||
"SET ANSI_WARNINGS OFF; WITH cte AS (SELECT md.MisNumber, md.RevID, md.Status, MIN(md.ReleaseDate) Released FROM dbo.MisData AS md GROUP BY md.MisNumber, md.RevID, md.Status) UPDATE dbo.MisData SET ObsoleteDate = bl.Released FROM cte bl WHERE MisData.MisNumber = bl.MisNumber AND MisData.RevID = bl.RevID AND MisData.Status = 'Current' AND bl.Status = 'BackLevel';",
|
"SET ANSI_WARNINGS OFF; WITH cte AS (SELECT md.MisNumber, md.RevID, md.Status, MIN(md.ReleaseDate) Released FROM dbo.MisData_Curr AS md GROUP BY md.MisNumber, md.RevID, md.Status) UPDATE dbo.MisData_Curr SET ObsoleteDate = bl.Released FROM cte bl WHERE MisData_Curr.MisNumber = bl.MisNumber AND MisData_Curr.RevID = bl.RevID AND MisData_Curr.Status = 'Current' AND bl.Status = 'BackLevel';",
|
||||||
"WITH cte AS (SELECT md.MisNumber, md.RevID, md.Status, MIN(md.ReleaseDate) Released FROM dbo.MisData AS md GROUP BY md.MisNumber, md.RevID, md.Status) UPDATE dbo.MisData SET ObsoleteDate = (SELECT TOP 1 nl.Released FROM cte nl WHERE MisData.MisNumber = nl.MisNumber AND MisData.RevID < nl.RevID AND MisData.Status = nl.Status ORDER BY nl.RevID) WHERE ObsoleteDate IS NULL;",
|
"WITH cte AS (SELECT md.MisNumber, md.RevID, md.Status, MIN(md.ReleaseDate) Released FROM dbo.MisData_Curr AS md GROUP BY md.MisNumber, md.RevID, md.Status) UPDATE dbo.MisData_Curr SET ObsoleteDate = (SELECT TOP 1 nl.Released FROM cte nl WHERE MisData_Curr.MisNumber = nl.MisNumber AND MisData_Curr.RevID < nl.RevID AND MisData_Curr.Status = nl.Status ORDER BY nl.RevID) WHERE ObsoleteDate IS NULL;",
|
||||||
"ALTER INDEX [PK_MisData] ON [dbo].[MisData] REBUILD;"
|
"ALTER INDEX [PK_MisData_Curr] ON [dbo].[MisData_Curr] REBUILD;"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"MisData_Hist": {
|
||||||
|
"source": {
|
||||||
|
"connection": "cms",
|
||||||
|
"query": "SELECT DISTINCT mis.P_PART_NUMBER AS ItemNumber, mis.P_OPERATION_NUMBER AS SequenceNumber, item.PITEM_ID AS MISNumber, itemrev.PITEM_REVISION_ID AS RevID, TRIM(mis.P_SITE) AS BranchCode, zim_test_details.P_SEQ_NUMBER AS CharNumber, zim_test_details.P_TEST_DESC AS TestDescription, zim_test_details.P_SAMPL_TYPE AS SamplingType, zim_test_details.P_SAMPL_VALUE AS SamplingValue, zim_test_details.P_TOOLS AS ToolsGauges, zim_test_details.P_WORK_INTR AS WorkInstructions, Status.PNAME AS Status, Status.PDATE_RELEASED AS ReleaseDate FROM INFODBA.PITEM item INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU) INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID) INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID) INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU) INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID) INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID) INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID) INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID) INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0) INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID) WHERE Status.PNAME = 'BackLevel' AND Status.PDATE_RELEASED >= :lastUpdateDT",
|
||||||
|
"massQuery": "SELECT DISTINCT mis.P_PART_NUMBER AS ItemNumber, mis.P_OPERATION_NUMBER AS SequenceNumber, item.PITEM_ID AS MISNumber, itemrev.PITEM_REVISION_ID AS RevID, TRIM(mis.P_SITE) AS BranchCode, zim_test_details.P_SEQ_NUMBER AS CharNumber, zim_test_details.P_TEST_DESC AS TestDescription, zim_test_details.P_SAMPL_TYPE AS SamplingType, zim_test_details.P_SAMPL_VALUE AS SamplingValue, zim_test_details.P_TOOLS AS ToolsGauges, zim_test_details.P_WORK_INTR AS WorkInstructions, Status.PNAME AS Status, Status.PDATE_RELEASED AS ReleaseDate FROM INFODBA.PITEM item INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU) INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID) INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID) INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU) INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID) INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID) INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID) INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID) INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0) INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID) WHERE Status.PNAME = 'BackLevel'",
|
||||||
|
"parameters": {
|
||||||
|
"lastUpdateDT": { "name": ":lastUpdateDT", "format": null, "source": "offset" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schedules": {
|
||||||
|
"mass": { "intervalMinutes": 100800 },
|
||||||
|
"daily": {},
|
||||||
|
"hourly": { "enabled": false }
|
||||||
|
},
|
||||||
|
"destination": {
|
||||||
|
"table": "MisData_Hist",
|
||||||
|
"matchColumns": ["ItemNumber", "BranchCode", "SequenceNumber", "MisNumber", "CharNumber"]
|
||||||
|
},
|
||||||
|
"postScripts": [
|
||||||
|
"SET ANSI_WARNINGS OFF; WITH cte AS (SELECT md.MisNumber, md.RevID, md.Status, MIN(md.ReleaseDate) Released FROM dbo.MisData_Hist AS md GROUP BY md.MisNumber, md.RevID, md.Status) UPDATE dbo.MisData_Hist SET ObsoleteDate = bl.Released FROM cte bl WHERE MisData_Hist.MisNumber = bl.MisNumber AND MisData_Hist.RevID = bl.RevID AND MisData_Hist.Status = 'Current' AND bl.Status = 'BackLevel';",
|
||||||
|
"WITH cte AS (SELECT md.MisNumber, md.RevID, md.Status, MIN(md.ReleaseDate) Released FROM dbo.MisData_Hist AS md GROUP BY md.MisNumber, md.RevID, md.Status) UPDATE dbo.MisData_Hist SET ObsoleteDate = (SELECT TOP 1 nl.Released FROM cte nl WHERE MisData_Hist.MisNumber = nl.MisNumber AND MisData_Hist.RevID < nl.RevID AND MisData_Hist.Status = nl.Status ORDER BY nl.RevID) WHERE ObsoleteDate IS NULL;",
|
||||||
|
"ALTER INDEX [PK_MisData_Hist] ON [dbo].[MisData_Hist] REBUILD;"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"WorkOrderTime_Curr": {
|
"WorkOrderTime_Curr": {
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
-- Migration: 012_CreateMisDataTable
|
-- Migration: 012_CreateMisDataTable
|
||||||
-- Source: OLD/Database/Tables/MisData.sql
|
-- Source: OLD/Database/Tables/MisData.sql
|
||||||
-- Changes: DATETIME -> DATETIME2(7)
|
-- Changes: DATETIME -> DATETIME2(7), now creates MisData_Hist (archival pattern)
|
||||||
|
-- Note: This script is kept for fresh installs; creates the _Hist table
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'MisData' AND schema_id = SCHEMA_ID('dbo'))
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'MisData_Hist' AND schema_id = SCHEMA_ID('dbo'))
|
||||||
BEGIN
|
BEGIN
|
||||||
CREATE TABLE [dbo].[MisData]
|
CREATE TABLE [dbo].[MisData_Hist]
|
||||||
(
|
(
|
||||||
[ItemNumber] VARCHAR(32) NOT NULL,
|
[ItemNumber] VARCHAR(32) NOT NULL,
|
||||||
[BranchCode] VARCHAR(32) NOT NULL,
|
[BranchCode] VARCHAR(32) NOT NULL,
|
||||||
@@ -20,7 +21,7 @@ BEGIN
|
|||||||
[Status] VARCHAR(32) NOT NULL,
|
[Status] VARCHAR(32) NOT NULL,
|
||||||
[ReleaseDate] DATETIME2(7) NULL,
|
[ReleaseDate] DATETIME2(7) NULL,
|
||||||
[ObsoleteDate] DATETIME2(7) NULL,
|
[ObsoleteDate] DATETIME2(7) NULL,
|
||||||
CONSTRAINT [PK_MisData] PRIMARY KEY CLUSTERED([ItemNumber], [BranchCode], [SequenceNumber], [MisNumber], [RevID], [Status], [CharNumber])
|
CONSTRAINT [PK_MisData_Hist] PRIMARY KEY CLUSTERED([ItemNumber], [BranchCode], [SequenceNumber], [MisNumber], [RevID], [Status], [CharNumber])
|
||||||
);
|
);
|
||||||
END
|
END
|
||||||
GO
|
GO
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
-- Migration: 012a_CreateMisDataHistTable
|
||||||
|
-- Source: OLD/Database/Tables/MisData.sql
|
||||||
|
-- Changes: DATETIME -> DATETIME2(7), split into Hist/Curr tables
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'MisData_Hist' AND schema_id = SCHEMA_ID('dbo'))
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[MisData_Hist]
|
||||||
|
(
|
||||||
|
[ItemNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[BranchCode] VARCHAR(32) NOT NULL,
|
||||||
|
[SequenceNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[MisNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[RevID] VARCHAR(32) NOT NULL,
|
||||||
|
[CharNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[TestDescription] VARCHAR(2000) NULL,
|
||||||
|
[SamplingType] VARCHAR(32) NULL,
|
||||||
|
[SamplingValue] VARCHAR(32) NULL,
|
||||||
|
[ToolsGauges] VARCHAR(2000) NULL,
|
||||||
|
[WorkInstructions] VARCHAR(2000) NULL,
|
||||||
|
[Status] VARCHAR(32) NOT NULL,
|
||||||
|
[ReleaseDate] DATETIME2(7) NULL,
|
||||||
|
[ObsoleteDate] DATETIME2(7) NULL,
|
||||||
|
CONSTRAINT [PK_MisData_Hist] PRIMARY KEY CLUSTERED([ItemNumber], [BranchCode], [SequenceNumber], [MisNumber], [RevID], [Status], [CharNumber])
|
||||||
|
);
|
||||||
|
END
|
||||||
|
GO
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
-- Migration: 012b_CreateMisDataCurrTable
|
||||||
|
-- Source: OLD/Database/Tables/MisData.sql
|
||||||
|
-- Changes: DATETIME -> DATETIME2(7), split into Hist/Curr tables
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'MisData_Curr' AND schema_id = SCHEMA_ID('dbo'))
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[MisData_Curr]
|
||||||
|
(
|
||||||
|
[ItemNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[BranchCode] VARCHAR(32) NOT NULL,
|
||||||
|
[SequenceNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[MisNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[RevID] VARCHAR(32) NOT NULL,
|
||||||
|
[CharNumber] VARCHAR(32) NOT NULL,
|
||||||
|
[TestDescription] VARCHAR(2000) NULL,
|
||||||
|
[SamplingType] VARCHAR(32) NULL,
|
||||||
|
[SamplingValue] VARCHAR(32) NULL,
|
||||||
|
[ToolsGauges] VARCHAR(2000) NULL,
|
||||||
|
[WorkInstructions] VARCHAR(2000) NULL,
|
||||||
|
[Status] VARCHAR(32) NOT NULL,
|
||||||
|
[ReleaseDate] DATETIME2(7) NULL,
|
||||||
|
[ObsoleteDate] DATETIME2(7) NULL,
|
||||||
|
CONSTRAINT [PK_MisData_Curr] PRIMARY KEY CLUSTERED([ItemNumber], [BranchCode], [SequenceNumber], [MisNumber], [RevID], [Status], [CharNumber])
|
||||||
|
);
|
||||||
|
END
|
||||||
|
GO
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
-- Migration: 033_CreateMisDataView
|
||||||
|
-- Source: OLD/Database/Views/MisData.sql
|
||||||
|
-- Union view combining MisData_Curr and MisData_Hist
|
||||||
|
|
||||||
|
CREATE OR ALTER VIEW [dbo].[MisData] AS
|
||||||
|
(
|
||||||
|
SELECT hist.*
|
||||||
|
FROM dbo.MisData_Hist hist
|
||||||
|
UNION ALL
|
||||||
|
SELECT curr.*
|
||||||
|
FROM dbo.MisData_Curr curr
|
||||||
|
);
|
||||||
|
GO
|
||||||
@@ -57,7 +57,7 @@ public class DevEtlPipelineFactoryTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void GetAvailableTables_Returns21Tables()
|
public void GetAvailableTables_Returns22Tables()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var factory = CreateFactoryFromConfig();
|
var factory = CreateFactoryFromConfig();
|
||||||
@@ -66,7 +66,7 @@ public class DevEtlPipelineFactoryTests
|
|||||||
var tables = factory.GetAvailableTables().ToList();
|
var tables = factory.GetAvailableTables().ToList();
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
tables.Count.ShouldBe(21);
|
tables.Count.ShouldBe(22);
|
||||||
tables.ShouldContain("Branch");
|
tables.ShouldContain("Branch");
|
||||||
tables.ShouldContain("WorkOrder_Curr");
|
tables.ShouldContain("WorkOrder_Curr");
|
||||||
tables.ShouldContain("LotUsage_Curr");
|
tables.ShouldContain("LotUsage_Curr");
|
||||||
@@ -173,8 +173,8 @@ public class DevEtlPipelineFactoryTests
|
|||||||
SizeCategories = new SizeCategories
|
SizeCategories = new SizeCategories
|
||||||
{
|
{
|
||||||
Small = ["Branch", "OrgHierarchy", "WorkCenter", "ProfitCenter"],
|
Small = ["Branch", "OrgHierarchy", "WorkCenter", "ProfitCenter"],
|
||||||
Medium = ["JdeUser", "FunctionCode", "Item", "RouteMaster"],
|
Medium = ["JdeUser", "FunctionCode", "Item", "RouteMaster", "MisData_Curr"],
|
||||||
Large = ["Lot", "MisData", "WorkOrder_Curr", "WorkOrder_Hist", "LotUsage_Hist", "WorkOrderComponent_Hist"],
|
Large = ["Lot", "MisData_Hist", "WorkOrder_Curr", "WorkOrder_Hist", "LotUsage_Hist", "WorkOrderComponent_Hist"],
|
||||||
VeryLarge = ["WorkOrderStep_Hist", "WorkOrderComponent_Curr", "WorkOrderRouting", "LotUsage_Curr", "WorkOrderStep_Curr", "WorkOrderTime_Hist", "WorkOrderTime_Curr"]
|
VeryLarge = ["WorkOrderStep_Hist", "WorkOrderComponent_Curr", "WorkOrderRouting", "LotUsage_Curr", "WorkOrderStep_Curr", "WorkOrderTime_Hist", "WorkOrderTime_Curr"]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -190,7 +190,8 @@ public class DevEtlPipelineFactoryTests
|
|||||||
["Item"] = new(new DevSourceConfig("item.pb.zstd"), new DevDestinationConfig("Item")),
|
["Item"] = new(new DevSourceConfig("item.pb.zstd"), new DevDestinationConfig("Item")),
|
||||||
["RouteMaster"] = new(new DevSourceConfig("routemaster.pb.zstd"), new DevDestinationConfig("RouteMaster")),
|
["RouteMaster"] = new(new DevSourceConfig("routemaster.pb.zstd"), new DevDestinationConfig("RouteMaster")),
|
||||||
["Lot"] = new(new DevSourceConfig("lot.pb.zstd"), new DevDestinationConfig("Lot")),
|
["Lot"] = new(new DevSourceConfig("lot.pb.zstd"), new DevDestinationConfig("Lot")),
|
||||||
["MisData"] = new(new DevSourceConfig("misdata.pb.zstd"), new DevDestinationConfig("MisData")),
|
["MisData_Curr"] = new(new DevSourceConfig("misdata_curr.pb.zstd"), new DevDestinationConfig("MisData_Curr")),
|
||||||
|
["MisData_Hist"] = new(new DevSourceConfig("misdata_hist.pb.zstd"), new DevDestinationConfig("MisData_Hist")),
|
||||||
["WorkOrder_Curr"] = new(new DevSourceConfig("workorder_curr.pb.zstd"), new DevDestinationConfig("WorkOrder_Curr")),
|
["WorkOrder_Curr"] = new(new DevSourceConfig("workorder_curr.pb.zstd"), new DevDestinationConfig("WorkOrder_Curr")),
|
||||||
["WorkOrder_Hist"] = new(new DevSourceConfig("workorder_hist.pb.zstd"), new DevDestinationConfig("WorkOrder_Hist")),
|
["WorkOrder_Hist"] = new(new DevSourceConfig("workorder_hist.pb.zstd"), new DevDestinationConfig("WorkOrder_Hist")),
|
||||||
["LotUsage_Curr"] = new(new DevSourceConfig("lotusage_curr.pb.zstd"), new DevDestinationConfig("LotUsage_Curr")),
|
["LotUsage_Curr"] = new(new DevSourceConfig("lotusage_curr.pb.zstd"), new DevDestinationConfig("LotUsage_Curr")),
|
||||||
|
|||||||
Reference in New Issue
Block a user