Measure CheckSum and NamedSet comparator (2)

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Measure CheckSum and NamedSet comparator

As part of our testing methodology, after each monthly PreProd upgrade, Customer Success team runs
batches to compare the Measure checksum and NamedSet member counts manually.
Every customer project used to get the checksum and count in Prod, PreProd separately and calculate the
differences for any discrepancy.
There is an SSIS package which automates the above process and details are as in the attachment.

In Project/s, where the automation part is not done, they can follow the below steps for Measure CheckSum.
User needs to follow below steps for manual check:
1. Port Prod Tenant Backup in testing Tenant
2. Run checksum Queries in Prod and Pre-prod tenants for workspaces like DP, SP etc, take out the output
and save it
3. Run the Batch/s in the Prod and testing Tenants
4. After Batch Job completion, run checksum queries in Prod and Pre-prod tenants and take out the output
and save it
5. Do the comparison between before and after Batch Job run checksum queries’ output for Prod and Pre-
Prod and see the difference
6. The output comparison can be shown in tables as below for NamesdetCount and Measure CheckSum
Queries Used for Demand Planning for Measure CheckSum: --
Select ([Version].[Version Name].CurrentWorkingView * {Measure.[PublishedForecastAtMonth],Measure.
[ARBasedSKUForecastatMonth],Measure.[StatisticalSKUForecast],Measure.
[ConsensusForecastAtMonth],Measure.[3WeekAllocationTrend], Measure.[NationalPaceRate] , Measure.
[IncomingPaceRateByPartialWeek], Measure.[AttachRateAtOEM_Market_PlanType], Measure.
[AttachRateAtOEM_PlanType], Measure.[Published Forecast Locked], Measure.[ Stat Fcst Disaggregation basis
at lowest], Measure.[ BATOrderDatausedforStatForecastDisaggregation], Measure.
[CurrentAndFutureDayAssociation]});
Named Sets:
Select &ForecastHorizon;
select &AllPlanningMonths.Filter(#.Key >= &CurrentPlanningMonth.element(0).LeadOffset(0).Key && #.Key <=
&CurrentPlanningMonth.element(0).LeadOffset(21).Key).count;
select &StatHorizon.count;

select &AllPlanningMonths.Filter(#.Key > &CurrentPlanningMonth.element(0).LeadOffset(-36).Key && #.Key


<= &CurrentPlanningMonth.element(0).LeadOffset(21).Key).count;

select &AllPlanType.count;

select [Plan Type].[Plan Type].count;

Queries Used for Supply Planning for Measure CheckSum: --


Select ([Version].[Version Name].[CurrentWorkingView] * [Time].[Week] * {Measure.[D Demand Quantity to
SCS],Measure.[D Expected Receipts],Measure.[W Beginning On Hand],Measure.[W Ending On Hand],Measure.
[D Target Inventory VF],Measure.[W Target Inventory],Measure.[W Beginning On Hand DR],Measure.[W
Ending On Hand DR],Measure.[Beginning On Hand VF at Day],Measure.[Ending Onhand VF At Day],Measure.
[W Material Consumption Quantity Plan Output],Measure.[D Material Production Quantity Plan Output
VF],Measure.[W Material Production Quantity Plan Output DR],Measure.[W Expected Receipts SA]});

Queries Used for Allocation for Measure CheckSum: --


Select ([Demand Type].[Demand Type] * [Location].[Location] * &Allocation * [Demand].[DemandID] * [Time].
[Day] * [Sales Domain].[Customer Group] * [Item].[Item] ) on row, ({Measure.[D Demand Quantity],Measure.
[Supplemental Orders],Measure.[National Priority Override],Measure.[Gated Orders],Measure.[Order
Type],Measure.[Plan Type],Measure.[REQ_DATE],Measure.[D Demand Priority R Output Normalised]}) on
column;
Select (&Allocation * [Demand].[DemandID] * [Time].[Day] * [Item].[Item] ) on row, ({Measure.[D Material
Consumption Pegged Quantity Allocation]}) on column; //Output of solver when the order is gated// Select
([Demand Type].[Demand Type] * [Location].[Location] * &Allocation * [Demand].[DemandID] * [Time].[Day]
* [Sales Domain].[Customer Group] * [Item].[Item] ) on row, ({Measure.[D Material Root Cause Quantity
Processed]}) on column;

Named Sets:
select &AllProducedItems.count;
select Activity3.[Activity Type3].filter(#.Name == "Item").relatedmembers([Activity3]).count;
select &AllBODLanes.count;
select Activity1.[Activity Type1].filter(#.Name == "Distribution").relatedmembers([Activity1]).count;
select &AllTransModes.count;
select Activity2.[Activity Type2].filter(#.Name == "Distribution").relatedmembers([Activity2]).count;
select &EligibleBOMOrdersDemandID.count;
select Demand.[DemandID].filter(#.BATOrderEligible=="Yes").count;

You might also like