@finos/legend-extension-dsl-data-quality 2.1.33 → 2.1.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/lib/components/DSL_DataQuality_LegendStudioApplicationPlugin.d.ts.map +1 -1
  2. package/lib/components/DSL_DataQuality_LegendStudioApplicationPlugin.js +45 -13
  3. package/lib/components/DSL_DataQuality_LegendStudioApplicationPlugin.js.map +1 -1
  4. package/lib/components/DataQualityCustomSelector.d.ts +16 -1
  5. package/lib/components/DataQualityCustomSelector.d.ts.map +1 -1
  6. package/lib/components/DataQualityCustomSelector.js +29 -4
  7. package/lib/components/DataQualityCustomSelector.js.map +1 -1
  8. package/lib/components/DataQualityExplorerPanel.js +1 -1
  9. package/lib/components/DataQualityExplorerPanel.js.map +1 -1
  10. package/lib/components/DataQualityMappingAndRuntimeBuilder.js +1 -1
  11. package/lib/components/DataQualityMappingAndRuntimeBuilder.js.map +1 -1
  12. package/lib/components/DataQualityRelationComparisonEditor.d.ts +19 -0
  13. package/lib/components/DataQualityRelationComparisonEditor.d.ts.map +1 -0
  14. package/lib/components/DataQualityRelationComparisonEditor.js +239 -0
  15. package/lib/components/DataQualityRelationComparisonEditor.js.map +1 -0
  16. package/lib/components/DataQualityRelationGridResult.d.ts +3 -0
  17. package/lib/components/DataQualityRelationGridResult.d.ts.map +1 -1
  18. package/lib/components/DataQualityRelationGridResult.js +1 -1
  19. package/lib/components/DataQualityRelationGridResult.js.map +1 -1
  20. package/lib/components/DataQualityRelationLambdaGUIDataTypeHandlers.d.ts +0 -10
  21. package/lib/components/DataQualityRelationLambdaGUIDataTypeHandlers.d.ts.map +1 -1
  22. package/lib/components/DataQualityRelationLambdaGUIDataTypeHandlers.js +11 -24
  23. package/lib/components/DataQualityRelationLambdaGUIDataTypeHandlers.js.map +1 -1
  24. package/lib/components/DataQualityRelationLambdaGUIValidationEditor.d.ts.map +1 -1
  25. package/lib/components/DataQualityRelationLambdaGUIValidationEditor.js +6 -4
  26. package/lib/components/DataQualityRelationLambdaGUIValidationEditor.js.map +1 -1
  27. package/lib/components/DataQualityResultPanel.js +1 -1
  28. package/lib/components/DataQualityResultPanel.js.map +1 -1
  29. package/lib/components/DataQualitySideBar.js +5 -5
  30. package/lib/components/DataQualitySideBar.js.map +1 -1
  31. package/lib/components/states/DataQualityClassValidationState.js +6 -6
  32. package/lib/components/states/DataQualityClassValidationState.js.map +1 -1
  33. package/lib/components/states/DataQualityGraphFetchTreeState.js +1 -1
  34. package/lib/components/states/DataQualityGraphFetchTreeState.js.map +1 -1
  35. package/lib/components/states/DataQualityRelationComparisonConfigurationState.d.ts +111 -0
  36. package/lib/components/states/DataQualityRelationComparisonConfigurationState.d.ts.map +1 -0
  37. package/lib/components/states/DataQualityRelationComparisonConfigurationState.js +495 -0
  38. package/lib/components/states/DataQualityRelationComparisonConfigurationState.js.map +1 -0
  39. package/lib/components/states/DataQualityState.d.ts +1 -1
  40. package/lib/components/states/DataQualityState.d.ts.map +1 -1
  41. package/lib/components/states/DataQualityState.js +6 -6
  42. package/lib/components/states/DataQualityState.js.map +1 -1
  43. package/lib/data-quality-custom-selector.css +2 -2
  44. package/lib/data-quality-custom-selector.css.map +1 -1
  45. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.d.ts +3 -1
  46. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.d.ts.map +1 -1
  47. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.js +2 -0
  48. package/lib/graph/metamodel/DSL_DataQuality_HashUtils.js.map +1 -1
  49. package/lib/graph/metamodel/DSL_DataQuality_PureGraphPlugin.d.ts.map +1 -1
  50. package/lib/graph/metamodel/DSL_DataQuality_PureGraphPlugin.js +2 -1
  51. package/lib/graph/metamodel/DSL_DataQuality_PureGraphPlugin.js.map +1 -1
  52. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.d.ts +35 -0
  53. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.d.ts.map +1 -1
  54. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js +37 -0
  55. package/lib/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js.map +1 -1
  56. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.d.ts +2 -1
  57. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.d.ts.map +1 -1
  58. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.js +2 -1
  59. package/lib/graph-manager/DSL_DataQuality_GraphManagerHelper.js.map +1 -1
  60. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.d.ts +7 -1
  61. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.d.ts.map +1 -1
  62. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.js +18 -0
  63. package/lib/graph-manager/DSL_DataQuality_GraphModifierHelper.js.map +1 -1
  64. package/lib/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.d.ts.map +1 -1
  65. package/lib/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.js +5 -2
  66. package/lib/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.js.map +1 -1
  67. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.d.ts +3 -1
  68. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.d.ts.map +1 -1
  69. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.js +28 -1
  70. package/lib/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.js.map +1 -1
  71. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.d.ts +4 -1
  72. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.d.ts.map +1 -1
  73. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.js.map +1 -1
  74. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.d.ts.map +1 -1
  75. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.js +33 -5
  76. package/lib/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.js.map +1 -1
  77. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.d.ts +26 -2
  78. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.d.ts.map +1 -1
  79. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.js +107 -3
  80. package/lib/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.js.map +1 -1
  81. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityValidationConfiguration.d.ts +19 -0
  82. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityValidationConfiguration.d.ts.map +1 -1
  83. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityValidationConfiguration.js +37 -0
  84. package/lib/graph-manager/protocol/pure/v1/V1_DataQualityValidationConfiguration.js.map +1 -1
  85. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.d.ts +2 -1
  86. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.d.ts.map +1 -1
  87. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.js +26 -3
  88. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.js.map +1 -1
  89. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.d.ts +3 -2
  90. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.d.ts.map +1 -1
  91. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.js +29 -2
  92. package/lib/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.js.map +1 -1
  93. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.d.ts +4 -1
  94. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.d.ts.map +1 -1
  95. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.js +37 -2
  96. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.js.map +1 -1
  97. package/lib/index.css +2 -2
  98. package/lib/index.css.map +1 -1
  99. package/lib/package.json +1 -1
  100. package/package.json +9 -9
  101. package/src/components/DSL_DataQuality_LegendStudioApplicationPlugin.tsx +64 -12
  102. package/src/components/DataQualityCustomSelector.tsx +111 -6
  103. package/src/components/DataQualityExplorerPanel.tsx +1 -1
  104. package/src/components/DataQualityMappingAndRuntimeBuilder.tsx +1 -1
  105. package/src/components/DataQualityRelationComparisonEditor.tsx +795 -0
  106. package/src/components/DataQualityRelationGridResult.tsx +1 -1
  107. package/src/components/DataQualityRelationLambdaGUIDataTypeHandlers.tsx +9 -87
  108. package/src/components/DataQualityRelationLambdaGUIValidationEditor.tsx +16 -6
  109. package/src/components/DataQualityResultPanel.tsx +1 -1
  110. package/src/components/DataQualitySideBar.tsx +5 -5
  111. package/src/components/states/DataQualityClassValidationState.ts +6 -6
  112. package/src/components/states/DataQualityGraphFetchTreeState.ts +1 -1
  113. package/src/components/states/DataQualityRelationComparisonConfigurationState.ts +747 -0
  114. package/src/components/states/DataQualityState.ts +6 -6
  115. package/src/graph/metamodel/DSL_DataQuality_HashUtils.ts +2 -0
  116. package/src/graph/metamodel/DSL_DataQuality_PureGraphPlugin.ts +2 -0
  117. package/src/graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.ts +66 -0
  118. package/src/graph-manager/DSL_DataQuality_GraphManagerHelper.ts +13 -0
  119. package/src/graph-manager/DSL_DataQuality_GraphModifierHelper.ts +57 -0
  120. package/src/graph-manager/DSL_DataQuality_PureGraphManagerPlugin.ts +8 -0
  121. package/src/graph-manager/action/changeDetection/DSL_DataQuality_ObserverHelper.ts +42 -0
  122. package/src/graph-manager/protocol/pure/DSL_DataQuality_PureGraphManagerExtension.ts +16 -0
  123. package/src/graph-manager/protocol/pure/DSL_DataQuality_PureProtocolProcessorPlugin.ts +65 -0
  124. package/src/graph-manager/protocol/pure/v1/V1_DSL_Data_Quality_PureGraphManagerExtension.ts +171 -1
  125. package/src/graph-manager/protocol/pure/v1/V1_DataQualityValidationConfiguration.ts +49 -0
  126. package/src/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.ts +39 -0
  127. package/src/graph-manager/protocol/pure/v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.ts +50 -0
  128. package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.ts +71 -0
  129. package/style/_data-quality-relation-comparison-editor.scss +361 -0
  130. package/style/data-quality-custom-selector.scss +23 -0
  131. package/style/index.scss +74 -0
  132. package/tsconfig.json +2 -0
@@ -158,7 +158,7 @@ export abstract class DataQualityState extends ElementEditorState {
158
158
  setShowDateSelection: action,
159
159
  updateElementOnClassChange: action,
160
160
  checkConstraintsSelectedAtNode: action,
161
- changeClass: action,
161
+ changeSourceElement: action,
162
162
  setProcessingDate: action,
163
163
  setBusinessDate: action,
164
164
  fetchStructuralValidations: flow,
@@ -220,7 +220,7 @@ export abstract class DataQualityState extends ElementEditorState {
220
220
  }
221
221
 
222
222
  get currentClassMilestoningStrategy(): MILESTONING_STEREOTYPE | undefined {
223
- const currentclass = this.dataQualityQueryBuilderState.class;
223
+ const currentclass = this.dataQualityQueryBuilderState.sourceClass;
224
224
  if (currentclass !== undefined) {
225
225
  return getMilestoneTemporalStereotype(
226
226
  currentclass,
@@ -360,7 +360,7 @@ export abstract class DataQualityState extends ElementEditorState {
360
360
  return;
361
361
  }
362
362
  const genericType = new GenericType(
363
- guaranteeNonNullable(this.dataQualityQueryBuilderState.class),
363
+ guaranteeNonNullable(this.dataQualityQueryBuilderState.sourceClass),
364
364
  );
365
365
  const genericTypeReference =
366
366
  GenericTypeExplicitReference.create(genericType);
@@ -409,14 +409,14 @@ export abstract class DataQualityState extends ElementEditorState {
409
409
  : 'data-quality-validation__setup__data-space';
410
410
  }
411
411
 
412
- changeClass(val: Class): void {
413
- this.dataQualityQueryBuilderState.changeClass(val);
412
+ changeSourceElement(val: Class): void {
413
+ this.dataQualityQueryBuilderState.changeSourceElement(val);
414
414
  this.structuralValidationsGraphFetchTreeState =
415
415
  new DataQualityGraphFetchTreeState(this);
416
416
  this.resultState = new DataQualityResultState(this);
417
417
  this.initializeGraphFetchTreeState(
418
418
  buildDefaultDataQualityRootGraphFetchTree(
419
- guaranteeNonNullable(this.dataQualityQueryBuilderState.class),
419
+ guaranteeNonNullable(this.dataQualityQueryBuilderState.sourceClass),
420
420
  ),
421
421
  );
422
422
  this.updateElementOnClassChange();
@@ -30,4 +30,6 @@ export enum DATA_QUALITY_HASH_STRUCTURE {
30
30
  DATA_QUALITY_RELATION_VALIDATION = 'DATA_QUALITY_RELATION_VALIDATION',
31
31
  DATA_QUALITY_RELATION_FUNCTION_DEFINITION = 'DATA_QUALITY_RELATION_FUNCTION_DEFINITION',
32
32
  DATA_QUALITY_RELATION_VALIDATION_QUERY = 'DATA_QUALITY_RELATION_VALIDATION_QUERY',
33
+ DATA_QUALITY_RELATION_COMPARISON_HASH_STRUCTURE = 'DATA_QUALITY_RELATION_COMPARISON',
34
+ DATA_QUALITY_MD5_HASH_STRATEGY = 'DATA_QUALITY_MD5_HASH_STRATEGY',
33
35
  }
@@ -21,6 +21,7 @@ import {
21
21
  DataQualityClassValidationsConfiguration,
22
22
  DataQualityServiceValidationConfiguration,
23
23
  DataQualityRelationValidationConfiguration,
24
+ DataQualityRelationComparisonConfiguration,
24
25
  } from './pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
25
26
 
26
27
  export class DSL_DataQuality_PureGraphPlugin extends PureGraphPlugin {
@@ -33,6 +34,7 @@ export class DSL_DataQuality_PureGraphPlugin extends PureGraphPlugin {
33
34
  DataQualityClassValidationsConfiguration,
34
35
  DataQualityServiceValidationConfiguration,
35
36
  DataQualityRelationValidationConfiguration,
37
+ DataQualityRelationComparisonConfiguration,
36
38
  ];
37
39
  }
38
40
  }
@@ -51,6 +51,23 @@ export interface DQValidationSuggestionInputOptions {
51
51
  lambdaParameterValues?: ParameterValue[];
52
52
  }
53
53
 
54
+ export interface DQReconciliationInputOptions {
55
+ clientVersion?: string | undefined;
56
+ source: RawLambda;
57
+ target: RawLambda;
58
+ keys: string[];
59
+ colsForHash: string[];
60
+ limit?: number | undefined;
61
+ aggregatedHash?: boolean | undefined;
62
+ sourceHashCol?: string | undefined;
63
+ targetHashCol?: string | undefined;
64
+ includeColumnValues?: boolean | undefined;
65
+ runSourceQuery?: boolean | undefined;
66
+ runTargetQuery?: boolean | undefined;
67
+ sourceLambdaParameterValues?: ParameterValue[];
68
+ targetLambdaParameterValues?: ParameterValue[];
69
+ }
70
+
54
71
  export abstract class DataQualityExecutionContext implements Hashable {
55
72
  abstract get hashCode(): string;
56
73
  }
@@ -189,3 +206,52 @@ export class DataQualityRelationValidationConfiguration
189
206
  return visitor.visit_PackageableElement(this);
190
207
  }
191
208
  }
209
+
210
+ export abstract class ReconStrategy implements Hashable {
211
+ abstract get hashCode(): string;
212
+ }
213
+
214
+ export class MD5HashStrategy extends ReconStrategy {
215
+ sourceHashColumn?: string | undefined;
216
+ targetHashColumn?: string | undefined;
217
+ aggregatedHash?: boolean | undefined;
218
+
219
+ override get hashCode(): string {
220
+ return hashArray([
221
+ DATA_QUALITY_HASH_STRUCTURE.DATA_QUALITY_MD5_HASH_STRATEGY,
222
+ this.sourceHashColumn ?? '',
223
+ this.targetHashColumn ?? '',
224
+ String(this.aggregatedHash ?? ''),
225
+ ]);
226
+ }
227
+ }
228
+
229
+ export class DataQualityRelationComparisonConfiguration
230
+ extends PackageableElement
231
+ implements Hashable
232
+ {
233
+ source!: DataQualityRelationQueryLambda;
234
+ target!: DataQualityRelationQueryLambda;
235
+ keys: string[] = [];
236
+ columnsToCompare: string[] = [];
237
+ strategy!: ReconStrategy;
238
+ expectedMatch?: number | undefined;
239
+
240
+ protected override get _elementHashCode(): string {
241
+ return hashArray([
242
+ DATA_QUALITY_HASH_STRUCTURE.DATA_QUALITY_RELATION_COMPARISON_HASH_STRUCTURE,
243
+ this.source,
244
+ this.target,
245
+ hashArray(this.keys),
246
+ hashArray(this.columnsToCompare),
247
+ this.expectedMatch ?? '',
248
+ this.strategy,
249
+ ]);
250
+ }
251
+
252
+ accept_PackageableElementVisitor<T>(
253
+ visitor: PackageableElementVisitor<T>,
254
+ ): T {
255
+ return visitor.visit_PackageableElement(this);
256
+ }
257
+ }
@@ -20,6 +20,7 @@ import {
20
20
  DataQualityClassValidationsConfiguration,
21
21
  DataQualityServiceValidationConfiguration,
22
22
  DataQualityRelationValidationConfiguration,
23
+ DataQualityRelationComparisonConfiguration,
23
24
  } from '../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
24
25
 
25
26
  export const getOwnDataQualityClassValidationsConfiguration = (
@@ -57,3 +58,15 @@ export const getOwnDataQualityRelationValidationsConfiguration = (
57
58
  ),
58
59
  `Can't find data quality tds validation element on '${path}'`,
59
60
  );
61
+
62
+ export const getOwnDataQualityRelationComparisonConfiguration = (
63
+ path: string,
64
+ graph: BasicModel,
65
+ ): DataQualityRelationComparisonConfiguration =>
66
+ guaranteeNonNullable(
67
+ graph.getOwnNullableExtensionElement(
68
+ path,
69
+ DataQualityRelationComparisonConfiguration,
70
+ ),
71
+ `Can't find data quality relation comparison element on '${path}'`,
72
+ );
@@ -20,6 +20,9 @@ import {
20
20
  type DataQualityExecutionContext,
21
21
  type DataQualityRelationValidation,
22
22
  type DataQualityRelationValidationConfiguration,
23
+ type DataQualityRelationComparisonConfiguration,
24
+ type DataQualityRelationQueryLambda,
25
+ type ReconStrategy,
23
26
  type RelationValidationType,
24
27
  DataSpaceDataQualityExecutionContext,
25
28
  MappingAndRuntimeDataQualityExecutionContext,
@@ -209,3 +212,57 @@ export const dataQualityRelationValidation_swapParameters = action(
209
212
  );
210
213
  },
211
214
  );
215
+
216
+ export const dataQualityRelationComparison_setSource = action(
217
+ (
218
+ element: DataQualityRelationComparisonConfiguration,
219
+ val: DataQualityRelationQueryLambda,
220
+ ): void => {
221
+ element.source = val;
222
+ },
223
+ );
224
+
225
+ export const dataQualityRelationComparison_setTarget = action(
226
+ (
227
+ element: DataQualityRelationComparisonConfiguration,
228
+ val: DataQualityRelationQueryLambda,
229
+ ): void => {
230
+ element.target = val;
231
+ },
232
+ );
233
+
234
+ export const dataQualityRelationComparison_setKeys = action(
235
+ (
236
+ element: DataQualityRelationComparisonConfiguration,
237
+ val: string[],
238
+ ): void => {
239
+ element.keys = val;
240
+ },
241
+ );
242
+
243
+ export const dataQualityRelationComparison_setColumnsToCompare = action(
244
+ (
245
+ element: DataQualityRelationComparisonConfiguration,
246
+ val: string[],
247
+ ): void => {
248
+ element.columnsToCompare = val;
249
+ },
250
+ );
251
+
252
+ export const dataQualityRelationComparison_setStrategy = action(
253
+ (
254
+ element: DataQualityRelationComparisonConfiguration,
255
+ val: ReconStrategy,
256
+ ): void => {
257
+ element.strategy = val;
258
+ },
259
+ );
260
+
261
+ export const dataQualityRelationComparison_setExpectedMatch = action(
262
+ (
263
+ element: DataQualityRelationComparisonConfiguration,
264
+ val: number | undefined,
265
+ ): void => {
266
+ element.expectedMatch = val;
267
+ },
268
+ );
@@ -25,11 +25,13 @@ import {
25
25
  DataQualityClassValidationsConfiguration,
26
26
  DataQualityServiceValidationConfiguration,
27
27
  DataQualityRelationValidationConfiguration,
28
+ DataQualityRelationComparisonConfiguration,
28
29
  } from '../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
29
30
  import {
30
31
  observe_DataQualityConstraintsConfiguration,
31
32
  observe_DataQualityServiceValidationConfiguration,
32
33
  observe_DataQualityRelationValidationConfiguration,
34
+ observe_DataQualityRelationComparisonConfiguration,
33
35
  } from './action/changeDetection/DSL_DataQuality_ObserverHelper.js';
34
36
  import { DSL_DataQuality_buildGraphManagerExtension } from './protocol/pure/DSL_DataQuality_buildGraphManagerExtension.js';
35
37
 
@@ -56,6 +58,12 @@ export class DSL_DataQuality_PureGraphManagerPlugin extends PureGraphManagerPlug
56
58
  context,
57
59
  );
58
60
  }
61
+ if (element instanceof DataQualityRelationComparisonConfiguration) {
62
+ return observe_DataQualityRelationComparisonConfiguration(
63
+ element,
64
+ context,
65
+ );
66
+ }
59
67
  return undefined;
60
68
  },
61
69
  ];
@@ -31,6 +31,9 @@ import {
31
31
  type DataQualityRelationValidation,
32
32
  type DataQualityRelationValidationConfiguration,
33
33
  type DataQualityRelationQueryLambda,
34
+ type DataQualityRelationComparisonConfiguration,
35
+ type ReconStrategy,
36
+ MD5HashStrategy,
34
37
  DataSpaceDataQualityExecutionContext,
35
38
  MappingAndRuntimeDataQualityExecutionContext,
36
39
  } from '../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
@@ -203,3 +206,42 @@ export const observe_DataQualityRelationValidationConfiguration =
203
206
  return metamodel;
204
207
  },
205
208
  );
209
+
210
+ export const observe_ReconStrategy = skipObserved(
211
+ (metamodel: ReconStrategy): ReconStrategy => {
212
+ if (metamodel instanceof MD5HashStrategy) {
213
+ return makeObservable(metamodel, {
214
+ sourceHashColumn: observable,
215
+ targetHashColumn: observable,
216
+ aggregatedHash: observable,
217
+ hashCode: computed,
218
+ });
219
+ }
220
+ return metamodel;
221
+ },
222
+ );
223
+
224
+ export const observe_DataQualityRelationComparisonConfiguration =
225
+ skipObservedWithContext(
226
+ (
227
+ metamodel: DataQualityRelationComparisonConfiguration,
228
+ ): DataQualityRelationComparisonConfiguration => {
229
+ observe_Abstract_PackageableElement(metamodel);
230
+ makeObservable<
231
+ DataQualityRelationComparisonConfiguration,
232
+ '_elementHashCode'
233
+ >(metamodel, {
234
+ _elementHashCode: override,
235
+ source: observable,
236
+ target: observable,
237
+ keys: observable,
238
+ columnsToCompare: observable,
239
+ strategy: observable,
240
+ expectedMatch: observable,
241
+ });
242
+ observe_DataQualityRelationQueryLambda(metamodel.source);
243
+ observe_DataQualityRelationQueryLambda(metamodel.target);
244
+ observe_ReconStrategy(metamodel.strategy);
245
+ return metamodel;
246
+ },
247
+ );
@@ -26,6 +26,7 @@ import { guaranteeNonNullable } from '@finos/legend-shared';
26
26
  import type {
27
27
  DataQualityRelationValidation,
28
28
  DQExecuteInputOptions,
29
+ DQReconciliationInputOptions,
29
30
  } from '../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
30
31
 
31
32
  export abstract class DSL_DataQuality_PureGraphManagerExtension extends AbstractPureGraphManagerExtension {
@@ -76,6 +77,21 @@ export abstract class DSL_DataQuality_PureGraphManagerExtension extends Abstract
76
77
  packagePath: string,
77
78
  options: DQExecuteInputOptions,
78
79
  ): Promise<DataQualityRelationValidation>;
80
+
81
+ abstract runReconciliation(
82
+ graph: PureModel,
83
+ options: DQReconciliationInputOptions,
84
+ ): Promise<ExecutionResult>;
85
+
86
+ abstract runReconciliationSourceQuery(
87
+ graph: PureModel,
88
+ options: DQReconciliationInputOptions,
89
+ ): Promise<ExecutionResult>;
90
+
91
+ abstract runReconciliationTargetQuery(
92
+ graph: PureModel,
93
+ options: DQReconciliationInputOptions,
94
+ ): Promise<ExecutionResult>;
79
95
  }
80
96
 
81
97
  export const getDataQualityPureGraphManagerExtension = (
@@ -21,31 +21,38 @@ import {
21
21
  V1_DataQualityServiceValidationsConfiguration,
22
22
  V1_DataQualityRelationValidationsConfiguration,
23
23
  V1_DataQualityValidationsConfiguration,
24
+ V1_DataQualityRelationComparisonConfiguration,
24
25
  } from './v1/V1_DataQualityValidationConfiguration.js';
25
26
  import {
26
27
  DataQualityClassValidationsConfiguration,
27
28
  DataQualityServiceValidationConfiguration,
28
29
  DataQualityRelationValidationConfiguration,
30
+ DataQualityRelationComparisonConfiguration,
29
31
  } from '../../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
30
32
  import {
31
33
  V1_DATA_QUALITY_PROTOCOL_TYPE,
32
34
  V1_DATA_QUALITY_SERVICE_PROTOCOL_TYPE,
33
35
  V1_DATA_QUALITY_RELATION_PROTOCOL_TYPE,
36
+ V1_DATA_QUALITY_RELATION_COMPARISON_PROTOCOL_TYPE,
34
37
  V1_deserializeDataQualityClassValidation,
35
38
  V1_deserializeDataQualityServiceValidation,
36
39
  V1_deserializeDataQualityRelationValidation,
37
40
  V1_serializeDataQualityClassValidation,
38
41
  V1_serializeDataQualityServiceValidation,
39
42
  V1_serializeDataQualityRelationValidation,
43
+ V1_serializeDataQualityRelationComparison,
44
+ V1_deserializeDataQualityRelationComparison,
40
45
  } from './v1/transformation/pureProtocol/V1_DSL_DataQuality_ProtocolHelper.js';
41
46
  import {
42
47
  V1_transformDataQualityClassValidationConfiguration,
43
48
  V1_transformDataQualityRelationValidationConfiguration,
49
+ V1_transformDataQualityRelationComparisonConfiguration,
44
50
  } from './v1/transformation/V1_DSL_DataQuality_ValueSpecificationTransformer.js';
45
51
  import {
46
52
  V1_buildDataQualityClassValidationConfiguration,
47
53
  V1_buildDataQualityRelationValidationConfiguration,
48
54
  V1_buildDataQualityServiceValidationConfiguration,
55
+ V1_buildDataQualityRelationComparisonConfiguration,
49
56
  } from './v1/transformation/V1_DSL_DataQuality_ValueSpecificationBuilderHelper.js';
50
57
  import { V1_DataQualityRootGraphFetchTree } from './v1/model/graphFetch/V1_DataQualityRootGraphFetchTree.js';
51
58
  import {
@@ -81,6 +88,8 @@ import { V1_buildValidationFunctionExpression } from './v1/V1_DataQualityValidat
81
88
  const DATA_QUALITY_CLASSIFIER_PATH = 'meta::external::dataquality::DataQuality';
82
89
  const DATA_QUALITY_RELATION_VALIDATION_CLASSIFIER_PATH =
83
90
  'meta::external::dataquality::DataQualityRelationValidation';
91
+ const DATA_QUALITY_RELATION_COMPARISON_CLASSIFIER_PATH =
92
+ 'meta::external::dataquality::DataQualityRelationComparison';
84
93
 
85
94
  export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolProcessorPlugin {
86
95
  constructor() {
@@ -210,6 +219,46 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
210
219
  );
211
220
  },
212
221
  }),
222
+
223
+ new V1_ElementBuilder<V1_DataQualityRelationComparisonConfiguration>({
224
+ elementClassName: V1_DATA_QUALITY_RELATION_COMPARISON_PROTOCOL_TYPE,
225
+ _class: V1_DataQualityRelationComparisonConfiguration,
226
+ firstPass: (
227
+ elementProtocol: V1_PackageableElement,
228
+ context: V1_GraphBuilderContext,
229
+ ): PackageableElement => {
230
+ assertType(
231
+ elementProtocol,
232
+ V1_DataQualityRelationComparisonConfiguration,
233
+ );
234
+ const element = new DataQualityRelationComparisonConfiguration(
235
+ elementProtocol.name,
236
+ );
237
+ const path = V1_buildFullPath(
238
+ elementProtocol.package,
239
+ elementProtocol.name,
240
+ );
241
+ context.currentSubGraph.setOwnElementInExtension(
242
+ path,
243
+ element,
244
+ DataQualityRelationComparisonConfiguration,
245
+ );
246
+ return element;
247
+ },
248
+ secondPass: (
249
+ elementProtocol: V1_PackageableElement,
250
+ context: V1_GraphBuilderContext,
251
+ ): void => {
252
+ assertType(
253
+ elementProtocol,
254
+ V1_DataQualityRelationComparisonConfiguration,
255
+ );
256
+ V1_buildDataQualityRelationComparisonConfiguration(
257
+ elementProtocol,
258
+ context,
259
+ );
260
+ },
261
+ }),
213
262
  ];
214
263
  }
215
264
 
@@ -220,6 +269,10 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
220
269
  protocol instanceof V1_DataQualityRelationValidationsConfiguration
221
270
  ) {
222
271
  return DATA_QUALITY_RELATION_VALIDATION_CLASSIFIER_PATH;
272
+ } else if (
273
+ protocol instanceof V1_DataQualityRelationComparisonConfiguration
274
+ ) {
275
+ return DATA_QUALITY_RELATION_COMPARISON_CLASSIFIER_PATH;
223
276
  } else if (protocol instanceof V1_DataQualityValidationsConfiguration) {
224
277
  return DATA_QUALITY_CLASSIFIER_PATH;
225
278
  }
@@ -245,6 +298,9 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
245
298
  ) {
246
299
  return V1_serializeDataQualityRelationValidation(protocol, plugins);
247
300
  }
301
+ if (protocol instanceof V1_DataQualityRelationComparisonConfiguration) {
302
+ return V1_serializeDataQualityRelationComparison(protocol, plugins);
303
+ }
248
304
  return undefined;
249
305
  },
250
306
  ];
@@ -304,6 +360,9 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
304
360
  if (json._type === V1_DATA_QUALITY_RELATION_PROTOCOL_TYPE) {
305
361
  return V1_deserializeDataQualityRelationValidation(json, plugins);
306
362
  }
363
+ if (json._type === V1_DATA_QUALITY_RELATION_COMPARISON_PROTOCOL_TYPE) {
364
+ return V1_deserializeDataQualityRelationComparison(json, plugins);
365
+ }
307
366
  return undefined;
308
367
  },
309
368
  ];
@@ -327,6 +386,12 @@ export class DSL_DataQuality_PureProtocolProcessorPlugin extends PureProtocolPro
327
386
  context,
328
387
  );
329
388
  }
389
+ if (metamodel instanceof DataQualityRelationComparisonConfiguration) {
390
+ return V1_transformDataQualityRelationComparisonConfiguration(
391
+ metamodel,
392
+ context,
393
+ );
394
+ }
330
395
  return undefined;
331
396
  },
332
397
  ];