Skip to content

Commit b4c7c0b

Browse files
authored
hotfix to handle duplicate export data csv rows for marking multiple decision points by same user (#2117)
1 parent f6c4c6d commit b4c7c0b

1 file changed

Lines changed: 27 additions & 10 deletions

File tree

backend/packages/Upgrade/src/api/repositories/AnalyticsRepository.ts

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -453,13 +453,22 @@ export class AnalyticsRepository extends Repository<AnalyticsRepository> {
453453
'"individualEnrollment"."experimentId" as "experimentId"',
454454
'"individualEnrollment"."conditionId" as "conditionId"',
455455
'"individualEnrollment"."partitionId" as "partitionId"',
456+
'"decisionPointData"."site" as "site"',
457+
'"decisionPointData"."target" as "target"',
456458
])
459+
.leftJoin(
460+
DecisionPoint,
461+
'decisionPointData',
462+
'decisionPointData.experimentId = individualEnrollment.experimentId AND decisionPointData.id = individualEnrollment.partitionId'
463+
)
457464
.groupBy('individualEnrollment.userId')
458465
.addGroupBy('individualEnrollment.groupId')
459466
.addGroupBy('individualEnrollment.enrollmentCode')
460467
.addGroupBy('individualEnrollment.experimentId')
461468
.addGroupBy('individualEnrollment.conditionId')
462469
.addGroupBy('individualEnrollment.partitionId')
470+
.addGroupBy('decisionPointData.site')
471+
.addGroupBy('decisionPointData.target')
463472
.orderBy('individualEnrollment.userId', 'ASC')
464473
.where('individualEnrollment.experimentId = :experimentId::uuid', { experimentId });
465474

@@ -515,6 +524,8 @@ export class AnalyticsRepository extends Repository<AnalyticsRepository> {
515524
enrollmentCode: individualEnrollmentQueryResult.enrollmentCode,
516525
expDecisionPointId: individualEnrollmentQueryResult.partitionId,
517526
expConditionId: individualEnrollmentQueryResult.conditionId,
527+
site: individualEnrollmentQueryResult.site,
528+
target: individualEnrollmentQueryResult.target,
518529
});
519530
}
520531
});
@@ -549,16 +560,22 @@ export class AnalyticsRepository extends Repository<AnalyticsRepository> {
549560
const userMonitoredResults =
550561
groupedMonitoredDecisionPointQueryResults[individualEnrollmentExperiment.userId] || [];
551562

552-
return userMonitoredResults.map((monitoredDecisionPointQueryResult) => ({
553-
...individualEnrollmentExperiment,
554-
site: monitoredDecisionPointQueryResult.site,
555-
target: monitoredDecisionPointQueryResult.target,
556-
markExperimentPointTime: monitoredDecisionPointQueryResult.markExperimentPointTime,
557-
stratificationValue: experimentsData.stratification
558-
? userStratificationFactorQueryResult.find((user) => user.userId === individualEnrollmentExperiment.userId)
559-
?.stratificationFactorValue
560-
: null,
561-
}));
563+
return userMonitoredResults
564+
.filter(
565+
(monitoredDecisionPointQueryResult) =>
566+
monitoredDecisionPointQueryResult.site === individualEnrollmentExperiment.site &&
567+
monitoredDecisionPointQueryResult.target === individualEnrollmentExperiment.target
568+
)
569+
.map((monitoredDecisionPointQueryResult) => ({
570+
...individualEnrollmentExperiment,
571+
site: monitoredDecisionPointQueryResult.site,
572+
target: monitoredDecisionPointQueryResult.target,
573+
markExperimentPointTime: monitoredDecisionPointQueryResult.markExperimentPointTime,
574+
stratificationValue: experimentsData.stratification
575+
? userStratificationFactorQueryResult.find((user) => user.userId === individualEnrollmentExperiment.userId)
576+
?.stratificationFactorValue
577+
: null,
578+
}));
562579
});
563580
return combinedCSVExportData;
564581
}

0 commit comments

Comments
 (0)