From a706ed1aeead9feea5627c9085622dfe044f510f Mon Sep 17 00:00:00 2001 From: Alberto Date: Wed, 24 Jun 2026 09:46:28 +0200 Subject: [PATCH 1/6] Add resolve_error_types() so errorcode defaults to String (or errorcode_vd type) and errorlevel defaults to Integer (or errorlevel_vd type) per VTL 2.2, replacing per-literal type inference in the pandas validation operators. --- src/vtlengine/Interpreter/__init__.py | 3 ++ src/vtlengine/Operators/Validation.py | 68 ++++++++++++++------------- tests/Validation/test_error_typing.py | 50 ++++++++++++++++++++ 3 files changed, 89 insertions(+), 32 deletions(-) create mode 100644 tests/Validation/test_error_typing.py diff --git a/src/vtlengine/Interpreter/__init__.py b/src/vtlengine/Interpreter/__init__.py index f798e609c..357a1109e 100644 --- a/src/vtlengine/Interpreter/__init__.py +++ b/src/vtlengine/Interpreter/__init__.py @@ -1249,6 +1249,7 @@ def visit_HROperation(self, node: AST.HROperation) -> Any: # noqa: C901 dataset_element=dataset, rule_info=rule_output_values, output=output, + value_domains=self.value_domains, ) return Hierarchy.validate(dataset, output) @@ -1323,6 +1324,7 @@ def visit_DPValidation(self, node: AST.DPValidation) -> Any: dataset_element=dataset_element, rule_info=rule_output_values, output=output, + value_domains=self.value_domains, ) def visit_DPRule(self, node: AST.DPRule) -> Any: @@ -1378,6 +1380,7 @@ def visit_Validation(self, node: AST.Validation) -> Dataset: error_code=node.error_code, error_level=node.error_level, invalid=node.invalid, + value_domains=self.value_domains, ) def visit_EvalOp(self, node: AST.EvalOp) -> Dataset: diff --git a/src/vtlengine/Operators/Validation.py b/src/vtlengine/Operators/Validation.py index 48318b97d..7d2fe5145 100644 --- a/src/vtlengine/Operators/Validation.py +++ b/src/vtlengine/Operators/Validation.py @@ -1,5 +1,5 @@ from copy import copy -from typing import Any, Dict, Optional, Type, Union +from typing import Any, Dict, Optional, Tuple, Type, Union from vtlengine.AST.Grammar.tokens import CHECK, CHECK_HIERARCHY from vtlengine.DataTypes import ( @@ -11,11 +11,25 @@ check_unary_implicit_promotion, ) from vtlengine.Exceptions import SemanticError -from vtlengine.Model import Component, Dataset, Role +from vtlengine.Model import Component, Dataset, Role, ValueDomain from vtlengine.Operators import Operator from vtlengine.Utils.__Virtual_Assets import VirtualCounter +def resolve_error_types( + value_domains: Optional[Dict[str, ValueDomain]], +) -> Tuple[Type[ScalarType], Type[ScalarType]]: + """Resolve the (errorcode, errorlevel) output types per VTL 2.2. + + errorcode -> type of the ``errorcode_vd`` Value Domain if provided, else String. + errorlevel -> type of the ``errorlevel_vd`` Value Domain if provided, else Integer. + """ + vds = value_domains or {} + errorcode_type = vds["errorcode_vd"].type if "errorcode_vd" in vds else String + errorlevel_type = vds["errorlevel_vd"].type if "errorlevel_vd" in vds else Integer + return errorcode_type, errorlevel_type + + # noinspection PyTypeChecker class Check(Operator): op = CHECK @@ -28,6 +42,7 @@ def validate( error_code: Optional[Union[str, int, float, bool]], error_level: Optional[Union[str, int, float, bool]], invalid: bool, + value_domains: Optional[Dict[str, ValueDomain]] = None, ) -> Dataset: dataset_name = VirtualCounter._new_ds_name() if len(validation_element.get_measures()) != 1: @@ -35,15 +50,7 @@ def validate( measure = validation_element.get_measures()[0] if measure.data_type != Boolean: raise SemanticError("1-1-10-1", op=cls.op, op_type="validation", me_type="Boolean") - error_level_type: Optional[Type[ScalarType]] = None - if isinstance(error_level, bool): - error_level_type = Boolean - elif error_level is None or isinstance(error_level, int): - error_level_type = Integer - elif isinstance(error_level, str): - error_level_type = String - else: - error_level_type = String + error_code_type, error_level_type = resolve_error_types(value_domains) imbalance_measure = None if imbalance_element is not None: @@ -75,7 +82,7 @@ def validate( result_components["imbalance"].name = "imbalance" result_components["errorcode"] = Component( - name="errorcode", data_type=String, role=Role.MEASURE, nullable=True + name="errorcode", data_type=error_code_type, role=Role.MEASURE, nullable=True ) result_components["errorlevel"] = Component( @@ -91,23 +98,14 @@ def validate( # noinspection PyTypeChecker class Validation(Operator): @classmethod - def validate(cls, dataset_element: Dataset, rule_info: Dict[str, Any], output: str) -> Dataset: - error_level_type: Optional[Type[ScalarType]] = None - error_levels = [ - rule_data.get("errorlevel") - for rule_data in rule_info.values() - if "errorlevel" in rule_data - ] - non_null_levels = [el for el in error_levels if el is not None] - - if all(isinstance(el, bool) for el in non_null_levels) and len(non_null_levels) > 0: - error_level_type = Boolean - elif len(non_null_levels) == 0 or all(isinstance(el, int) for el in non_null_levels): - error_level_type = Number - elif all(isinstance(el, str) for el in non_null_levels): - error_level_type = String - else: - error_level_type = String + def validate( + cls, + dataset_element: Dataset, + rule_info: Dict[str, Any], + output: str, + value_domains: Optional[Dict[str, ValueDomain]] = None, + ) -> Dataset: + error_code_type, error_level_type = resolve_error_types(value_domains) dataset_name = VirtualCounter._new_ds_name() result_components = {comp.name: comp for comp in dataset_element.get_identifiers()} result_components["ruleid"] = Component( @@ -131,7 +129,7 @@ def validate(cls, dataset_element: Dataset, rule_info: Dict[str, Any], output: s ), } result_components["errorcode"] = Component( - name="errorcode", data_type=String, role=Role.MEASURE, nullable=True + name="errorcode", data_type=error_code_type, role=Role.MEASURE, nullable=True ) result_components["errorlevel"] = Component( name="errorlevel", @@ -151,8 +149,14 @@ class Check_Hierarchy(Validation): op = CHECK_HIERARCHY @classmethod - def validate(cls, dataset_element: Dataset, rule_info: Dict[str, Any], output: str) -> Dataset: - result = super().validate(dataset_element, rule_info, output) + def validate( + cls, + dataset_element: Dataset, + rule_info: Dict[str, Any], + output: str, + value_domains: Optional[Dict[str, ValueDomain]] = None, + ) -> Dataset: + result = super().validate(dataset_element, rule_info, output, value_domains) result.components["imbalance"] = Component( name="imbalance", data_type=Number, role=Role.MEASURE, nullable=True ) diff --git a/tests/Validation/test_error_typing.py b/tests/Validation/test_error_typing.py new file mode 100644 index 000000000..d9c2030ce --- /dev/null +++ b/tests/Validation/test_error_typing.py @@ -0,0 +1,50 @@ + +from vtlengine import semantic_analysis +from vtlengine.DataTypes import Integer, String +from vtlengine.Model import ValueDomain +from vtlengine.Operators.Validation import resolve_error_types + +DS_STRUCT = { + "datasets": [ + { + "name": "DS_1", + "DataStructure": [ + {"name": "Id_1", "type": "Integer", "role": "Identifier", "nullable": False}, + {"name": "Me_1", "type": "Number", "role": "Measure", "nullable": True}, + ], + } + ] +} + +DPR_SCRIPT = """ +define datapoint ruleset dpr1 ( variable Me_1 ) is + when Me_1 > 0 then Me_1 < 100 errorcode "bad" errorlevel 5 +end datapoint ruleset; +DS_r <- check_datapoint ( DS_1, dpr1 all ); +""" + + +def test_resolve_error_types_defaults(): + assert resolve_error_types(None) == (String, Integer) + assert resolve_error_types({}) == (String, Integer) + + +def test_resolve_error_types_overrides(): + vds = { + "errorcode_vd": ValueDomain(name="errorcode_vd", type=Integer, setlist=[1, 2]), + "errorlevel_vd": ValueDomain(name="errorlevel_vd", type=String, setlist=["a", "b"]), + } + assert resolve_error_types(vds) == (Integer, String) + + +def test_check_datapoint_default_errorlevel_is_integer(): + res = semantic_analysis(script=DPR_SCRIPT, data_structures=DS_STRUCT) + comps = res["DS_r"].components + assert comps["errorlevel"].data_type == Integer + assert comps["errorcode"].data_type == String + + +def test_check_datapoint_errorlevel_vd_override(): + vds = [{"name": "errorlevel_vd", "setlist": ["high", "low"], "type": "String"}] + res = semantic_analysis(script=DPR_SCRIPT, data_structures=DS_STRUCT, value_domains=vds) + assert res["DS_r"].components["errorlevel"].data_type == String From 563b76a2284ae3e5223e5177399c3fb2d8ff9609 Mon Sep 17 00:00:00 2001 From: Alberto Date: Wed, 24 Jun 2026 10:47:13 +0200 Subject: [PATCH 2/6] Refactored tests to fit the current update of errorlevel and errorcode --- .../Transpiler/structure_visitor.py | 9 +++++---- .../data/DataStructure/output/11-10-DS_r.json | 2 +- .../data/DataStructure/output/11-11-DS_r.json | 2 +- .../data/DataStructure/output/11-12-DS_r.json | 2 +- .../data/DataStructure/output/11-13-DS_r.json | 2 +- .../data/DataStructure/output/11-14-DS_r.json | 2 +- .../data/DataStructure/output/11-15-DS_r.json | 2 +- .../data/DataStructure/output/11-16-DS_r.json | 2 +- .../data/DataStructure/output/11-17-DS_r.json | 2 +- .../data/DataStructure/output/11-18-DS_r.json | 2 +- .../data/DataStructure/output/11-19-DS_r.json | 2 +- .../data/DataStructure/output/11-20-DS_r.json | 2 +- .../data/DataStructure/output/11-21-DS_r.json | 2 +- .../data/DataStructure/output/11-22-DS_r.json | 2 +- .../data/DataStructure/output/11-23-DS_r.json | 2 +- .../data/DataStructure/output/11-24-DS_r.json | 2 +- .../data/DataStructure/output/11-25-DS_r.json | 2 +- .../data/DataStructure/output/11-26-DS_r.json | 2 +- .../data/DataStructure/output/11-27-DS_r.json | 2 +- .../data/DataStructure/output/11-28-DS_r.json | 2 +- .../data/DataStructure/output/11-29-DS_r.json | 2 +- .../data/DataStructure/output/11-30-DS_r.json | 2 +- .../data/DataStructure/output/11-4-DS_r.json | 2 +- .../data/DataStructure/output/11-5-DS_r.json | 2 +- .../data/DataStructure/output/11-6-DS_r.json | 2 +- .../data/DataStructure/output/11-7-DS_r.json | 2 +- .../data/DataStructure/output/11-8-DS_r.json | 2 +- .../data/DataStructure/output/11-9-DS_r.json | 2 +- .../output/BOP_Q_Review_1-18.json | 2 +- .../output/BOP_Q_Review_1-19.json | 2 +- .../output/BOP_Q_Review_1-20.json | 2 +- .../output/BOP_Q_Review_1-21.json | 2 +- .../output/BOP_Q_Review_1-22.json | 2 +- .../output/BOP_Q_Review_1-23.json | 2 +- .../output/BOP_Q_Review_1-24.json | 2 +- .../output/BOP_Q_Review_1-25.json | 2 +- .../output/BOP_Q_Review_1-26.json | 2 +- .../output/BOP_Q_Review_1-27.json | 2 +- .../output/BOP_Q_Review_1-28.json | 2 +- .../output/BOP_Q_Review_1-29.json | 2 +- .../DEMO1-val.valResult_nonFiltered.json | 2 +- .../DataStructure/output/VALIDATIONS-12.json | 2 +- .../DataStructure/output/VALIDATIONS-13.json | 2 +- .../DataStructure/output/VALIDATIONS-14.json | 2 +- .../DataStructure/output/VALIDATIONS-15.json | 2 +- .../DataStructure/output/VALIDATIONS-16.json | 2 +- .../DataStructure/output/VALIDATIONS-17.json | 2 +- .../DataStructure/output/VALIDATIONS-18.json | 2 +- .../DataStructure/output/VALIDATIONS-19.json | 2 +- .../DataStructure/output/VALIDATIONS-20.json | 2 +- .../DataStructure/output/VALIDATIONS-21.json | 2 +- .../AnaVal_Monthly_validations_1-100.json | 2 +- .../AnaVal_Monthly_validations_1-101.json | 2 +- .../AnaVal_Monthly_validations_1-102.json | 2 +- .../AnaVal_Monthly_validations_1-117.json | 2 +- .../AnaVal_Monthly_validations_1-119.json | 2 +- .../AnaVal_Monthly_validations_1-121.json | 2 +- .../AnaVal_Monthly_validations_1-123.json | 2 +- .../AnaVal_Monthly_validations_1-125.json | 2 +- .../AnaVal_Monthly_validations_1-127.json | 2 +- .../AnaVal_Monthly_validations_1-129.json | 2 +- .../AnaVal_Monthly_validations_1-131.json | 2 +- .../AnaVal_Monthly_validations_1-16.json | 2 +- .../AnaVal_Monthly_validations_1-185.json | 2 +- .../AnaVal_Monthly_validations_1-48.json | 2 +- .../AnaVal_Monthly_validations_1-50.json | 2 +- .../AnaVal_Monthly_validations_1-54.json | 2 +- .../AnaVal_Monthly_validations_1-58.json | 2 +- .../AnaVal_Monthly_validations_1-60.json | 2 +- .../AnaVal_Monthly_validations_1-69.json | 2 +- .../AnaVal_Monthly_validations_1-71.json | 2 +- .../AnaVal_Monthly_validations_1-73.json | 2 +- .../AnaVal_Monthly_validations_1-79.json | 2 +- .../AnaVal_Monthly_validations_1-96.json | 2 +- .../AnaVal_Monthly_validations_1-97.json | 2 +- .../AnaVal_Monthly_validations_1-98.json | 2 +- .../AnaVal_Monthly_validations_1-99.json | 2 +- .../AnaVal_Monthly_validations_2-100.json | 2 +- .../AnaVal_Monthly_validations_2-101.json | 2 +- .../AnaVal_Monthly_validations_2-102.json | 2 +- .../AnaVal_Monthly_validations_2-117.json | 2 +- .../AnaVal_Monthly_validations_2-119.json | 2 +- .../AnaVal_Monthly_validations_2-121.json | 2 +- .../AnaVal_Monthly_validations_2-123.json | 2 +- .../AnaVal_Monthly_validations_2-125.json | 2 +- .../AnaVal_Monthly_validations_2-127.json | 2 +- .../AnaVal_Monthly_validations_2-129.json | 2 +- .../AnaVal_Monthly_validations_2-131.json | 2 +- .../AnaVal_Monthly_validations_2-16.json | 2 +- .../AnaVal_Monthly_validations_2-185.json | 2 +- .../AnaVal_Monthly_validations_2-48.json | 2 +- .../AnaVal_Monthly_validations_2-50.json | 2 +- .../AnaVal_Monthly_validations_2-54.json | 2 +- .../AnaVal_Monthly_validations_2-58.json | 2 +- .../AnaVal_Monthly_validations_2-60.json | 2 +- .../AnaVal_Monthly_validations_2-69.json | 2 +- .../AnaVal_Monthly_validations_2-71.json | 2 +- .../AnaVal_Monthly_validations_2-73.json | 2 +- .../AnaVal_Monthly_validations_2-79.json | 2 +- .../AnaVal_Monthly_validations_2-96.json | 2 +- .../AnaVal_Monthly_validations_2-97.json | 2 +- .../AnaVal_Monthly_validations_2-98.json | 2 +- .../AnaVal_Monthly_validations_2-99.json | 2 +- .../AnaVal_Quarterly_validations_1-12.json | 2 +- .../AnaVal_Quarterly_validations_1-14.json | 2 +- .../AnaVal_Quarterly_validations_1-17.json | 2 +- .../AnaVal_Quarterly_validations_1-19.json | 2 +- .../AnaVal_Quarterly_validations_1-21.json | 2 +- .../AnaVal_Quarterly_validations_1-22.json | 2 +- .../AnaVal_Quarterly_validations_1-23.json | 2 +- .../AnaVal_Quarterly_validations_1-8.json | 2 +- .../AnaVal_Quarterly_validations_2-12.json | 2 +- .../AnaVal_Quarterly_validations_2-14.json | 2 +- .../AnaVal_Quarterly_validations_2-17.json | 2 +- .../AnaVal_Quarterly_validations_2-19.json | 2 +- .../AnaVal_Quarterly_validations_2-21.json | 2 +- .../AnaVal_Quarterly_validations_2-22.json | 2 +- .../AnaVal_Quarterly_validations_2-23.json | 2 +- .../AnaVal_Quarterly_validations_2-8.json | 2 +- .../data/DataStructure/output/GL_117_1-1.json | 2 +- .../data/DataStructure/output/GL_117_2-1.json | 2 +- .../data/DataStructure/output/GL_117_3-1.json | 2 +- .../data/DataStructure/output/GL_117_4-1.json | 2 +- .../data/DataStructure/output/GL_19-1.json | 2 +- .../data/DataStructure/output/GL_269-1.json | 2 +- .../data/DataStructure/output/GL_53-1.json | 2 +- .../DataStructure/output/VTLEN_563-DS_r.json | 2 +- .../data/DataStructure/output/reference.json | 4 ++-- .../data/DataStructure/output/1-1-1-1-1.json | 2 +- .../data/DataStructure/output/1-1-1-10-1.json | 2 +- .../data/DataStructure/output/1-1-1-11-1.json | 2 +- .../data/DataStructure/output/1-1-1-2-1.json | 2 +- .../data/DataStructure/output/1-1-1-3-1.json | 2 +- .../data/DataStructure/output/1-1-1-4-1.json | 2 +- .../data/DataStructure/output/1-1-1-5-1.json | 2 +- .../data/DataStructure/output/1-1-1-6-1.json | 2 +- .../data/DataStructure/output/1-1-1-7-1.json | 2 +- .../data/DataStructure/output/1-1-1-8-1.json | 2 +- .../data/DataStructure/output/1-1-1-9-1.json | 2 +- .../data/DataStructure/output/GH_844_1-1.json | 2 +- .../data/ValueDomain/errorlevel_vd_bool.json | 1 + .../test_datapoint_rulesets.py | 13 ++++++++++-- .../data/DataStructure/output/1-1-1-1-1.json | 2 +- .../data/DataStructure/output/1-1-1-10-1.json | 2 +- .../data/DataStructure/output/1-1-1-11-1.json | 2 +- .../data/DataStructure/output/1-1-1-12-1.json | 2 +- .../data/DataStructure/output/1-1-1-19-1.json | 2 +- .../data/DataStructure/output/1-1-1-2-1.json | 2 +- .../data/DataStructure/output/1-1-1-20-1.json | 2 +- .../data/DataStructure/output/1-1-1-21-1.json | 2 +- .../data/DataStructure/output/1-1-1-22-1.json | 2 +- .../data/DataStructure/output/1-1-1-23-1.json | 2 +- .../data/DataStructure/output/1-1-1-24-1.json | 2 +- .../data/DataStructure/output/1-1-1-25-1.json | 2 +- .../data/DataStructure/output/1-1-1-26-1.json | 2 +- .../data/DataStructure/output/1-1-1-27-1.json | 2 +- .../data/DataStructure/output/1-1-1-28-1.json | 2 +- .../data/DataStructure/output/1-1-1-29-1.json | 2 +- .../data/DataStructure/output/1-1-1-3-1.json | 2 +- .../data/DataStructure/output/1-1-1-30-1.json | 2 +- .../data/DataStructure/output/1-1-1-31-1.json | 2 +- .../data/DataStructure/output/1-1-1-4-1.json | 2 +- .../data/DataStructure/output/1-1-1-5-1.json | 2 +- .../data/DataStructure/output/1-1-1-6-1.json | 2 +- .../data/DataStructure/output/1-1-1-7-1.json | 2 +- .../data/DataStructure/output/1-1-1-8-1.json | 2 +- .../data/DataStructure/output/1-1-1-9-1.json | 2 +- .../data/DataStructure/output/GL_145_2-1.json | 2 +- .../data/DataStructure/output/GL_145_4-1.json | 2 +- .../data/DataStructure/output/GL_265_1-1.json | 2 +- .../data/DataStructure/output/GL_265_2-1.json | 2 +- .../data/DataStructure/output/GL_265_4-1.json | 2 +- .../data/DataStructure/output/GL_265_4-2.json | 2 +- .../data/DataStructure/output/GL_265_4-3.json | 2 +- .../data/DataStructure/output/GL_265_5-1.json | 2 +- .../data/DataStructure/output/GL_265_5-2.json | 2 +- .../data/DataStructure/output/GL_265_5-3.json | 2 +- .../data/DataStructure/output/GL_275_1-1.json | 2 +- .../data/DataStructure/output/GL_397_1-1.json | 2 +- .../DataStructure/output/GL_397_11-1.json | 2 +- .../DataStructure/output/GL_397_13-1.json | 2 +- .../DataStructure/output/GL_397_17-1.json | 2 +- .../DataStructure/output/GL_397_18-1.json | 2 +- .../DataStructure/output/GL_397_23-1.json | 2 +- .../DataStructure/output/GL_397_24-1.json | 2 +- .../DataStructure/output/GL_397_25-1.json | 2 +- .../DataStructure/output/GL_397_27-1.json | 2 +- .../DataStructure/output/GL_397_30-1.json | 2 +- .../DataStructure/output/GL_397_32-1.json | 2 +- .../DataStructure/output/GL_397_34-1.json | 2 +- .../data/DataStructure/output/GL_397_5-1.json | 2 +- .../data/DataStructure/output/GL_397_9-1.json | 2 +- .../data/ValueDomain/errorlevel_vd_bool.json | 1 + tests/Hierarchical/test_hierarchical.py | 13 ++++++++++-- .../data/DataStructure/output/157-DS_r.json | 2 +- .../data/DataStructure/output/158-DS_r.json | 2 +- .../data/DataStructure/output/159-DS_r.json | 2 +- .../data/DataStructure/output/Sc_24-1.json | 2 +- .../data/DataStructure/output/Sc_30-1.json | 2 +- .../data/DataStructure/output/GL_65-1.json | 2 +- .../data/DataStructure/output/1-1-1-1-1.json | 2 +- .../data/DataStructure/output/1-1-1-2-1.json | 2 +- .../data/DataStructure/output/1-1-1-7-1.json | 2 +- .../data/DataStructure/output/1-1-1-8-1.json | 2 +- .../data/DataStructure/output/1-1-1-9-1.json | 2 +- .../data/DataStructure/output/GL_446_1-1.json | 2 +- .../data/DataStructure/output/GL_446_1-2.json | 2 +- .../data/ValueDomain/errorlevel_vd_bool.json | 1 + .../data/ValueDomain/errorlevel_vd_str.json | 1 + tests/Validation/test_error_typing.py | 16 ++++++++++++++- tests/Validation/test_validation.py | 20 ++++++++++++++++--- 211 files changed, 266 insertions(+), 215 deletions(-) create mode 100644 tests/DatapointRulesets/data/ValueDomain/errorlevel_vd_bool.json create mode 100644 tests/Hierarchical/data/ValueDomain/errorlevel_vd_bool.json create mode 100644 tests/Validation/data/ValueDomain/errorlevel_vd_bool.json create mode 100644 tests/Validation/data/ValueDomain/errorlevel_vd_str.json diff --git a/src/vtlengine/duckdb_transpiler/Transpiler/structure_visitor.py b/src/vtlengine/duckdb_transpiler/Transpiler/structure_visitor.py index c67e3c182..f59279766 100644 --- a/src/vtlengine/duckdb_transpiler/Transpiler/structure_visitor.py +++ b/src/vtlengine/duckdb_transpiler/Transpiler/structure_visitor.py @@ -19,8 +19,9 @@ from vtlengine.DataTypes import String as StringType from vtlengine.DataTypes.TimeHandling import TimePeriodHandler from vtlengine.duckdb_transpiler.Transpiler.sql_builder import quote_name -from vtlengine.Model import Component, Dataset, Role +from vtlengine.Model import Component, Dataset, Role, ValueDomain from vtlengine.Operators.Join import merged_viral_attribute_names +from vtlengine.Operators.Validation import resolve_error_types def _try_normalize_time_period(value: str) -> Optional[str]: @@ -59,6 +60,7 @@ def __init__( **self.output_datasets, } self.scalars: Dict[str, Any] = scalars or {} + self.value_domains: Dict[str, ValueDomain] = {} self.current_assignment: str = "" self._in_clause: bool = False self._current_dataset: Optional[Dataset] = None @@ -533,7 +535,6 @@ def _build_validation_structure(self, node: AST.Validation) -> Optional[Dataset] val_comps = self._identifiers_dict(inner_ds) self._add_error_measures( val_comps, - errorlevel_type=Integer, with_ruleid=False, with_bool_var=True, ) @@ -564,19 +565,19 @@ def _add_error_measures( self, comps: Dict[str, Component], *, - errorlevel_type: Any = Number, with_ruleid: bool = True, with_imbalance: bool = True, with_bool_var: bool = False, ) -> None: """Append the standard validation/hierarchy error-reporting measures.""" + errorcode_type, errorlevel_type = resolve_error_types(self.value_domains) if with_bool_var: comps["bool_var"] = self._make_comp("bool_var", Boolean) if with_imbalance: comps["imbalance"] = self._make_comp("imbalance", Number) if with_ruleid: comps["ruleid"] = self._make_comp("ruleid", StringType, Role.IDENTIFIER, False) - comps["errorcode"] = self._make_comp("errorcode", StringType) + comps["errorcode"] = self._make_comp("errorcode", errorcode_type) comps["errorlevel"] = self._make_comp("errorlevel", errorlevel_type) # ========================================================================= diff --git a/tests/Additional/data/DataStructure/output/11-10-DS_r.json b/tests/Additional/data/DataStructure/output/11-10-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-10-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-10-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-11-DS_r.json b/tests/Additional/data/DataStructure/output/11-11-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-11-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-11-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-12-DS_r.json b/tests/Additional/data/DataStructure/output/11-12-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-12-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-12-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-13-DS_r.json b/tests/Additional/data/DataStructure/output/11-13-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-13-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-13-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-14-DS_r.json b/tests/Additional/data/DataStructure/output/11-14-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-14-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-14-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-15-DS_r.json b/tests/Additional/data/DataStructure/output/11-15-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-15-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-15-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-16-DS_r.json b/tests/Additional/data/DataStructure/output/11-16-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-16-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-16-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-17-DS_r.json b/tests/Additional/data/DataStructure/output/11-17-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-17-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-17-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-18-DS_r.json b/tests/Additional/data/DataStructure/output/11-18-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-18-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-18-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-19-DS_r.json b/tests/Additional/data/DataStructure/output/11-19-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-19-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-19-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-20-DS_r.json b/tests/Additional/data/DataStructure/output/11-20-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-20-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-20-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-21-DS_r.json b/tests/Additional/data/DataStructure/output/11-21-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-21-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-21-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-22-DS_r.json b/tests/Additional/data/DataStructure/output/11-22-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-22-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-22-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-23-DS_r.json b/tests/Additional/data/DataStructure/output/11-23-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-23-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-23-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-24-DS_r.json b/tests/Additional/data/DataStructure/output/11-24-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-24-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-24-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-25-DS_r.json b/tests/Additional/data/DataStructure/output/11-25-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-25-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-25-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-26-DS_r.json b/tests/Additional/data/DataStructure/output/11-26-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-26-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-26-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-27-DS_r.json b/tests/Additional/data/DataStructure/output/11-27-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-27-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-27-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-28-DS_r.json b/tests/Additional/data/DataStructure/output/11-28-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-28-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-28-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-29-DS_r.json b/tests/Additional/data/DataStructure/output/11-29-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-29-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-29-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-30-DS_r.json b/tests/Additional/data/DataStructure/output/11-30-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-30-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-30-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-4-DS_r.json b/tests/Additional/data/DataStructure/output/11-4-DS_r.json index 78a634b03..7b7ec7525 100644 --- a/tests/Additional/data/DataStructure/output/11-4-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-4-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-5-DS_r.json b/tests/Additional/data/DataStructure/output/11-5-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-5-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-5-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-6-DS_r.json b/tests/Additional/data/DataStructure/output/11-6-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-6-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-6-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-7-DS_r.json b/tests/Additional/data/DataStructure/output/11-7-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-7-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-7-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-8-DS_r.json b/tests/Additional/data/DataStructure/output/11-8-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-8-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-8-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Additional/data/DataStructure/output/11-9-DS_r.json b/tests/Additional/data/DataStructure/output/11-9-DS_r.json index f2b0127c5..2185674f5 100644 --- a/tests/Additional/data/DataStructure/output/11-9-DS_r.json +++ b/tests/Additional/data/DataStructure/output/11-9-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-18.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-18.json index b94b034ed..523ea3628 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-18.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-18.json @@ -126,7 +126,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-19.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-19.json index f44b58479..587632ad2 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-19.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-19.json @@ -126,7 +126,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-20.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-20.json index 425cef9ea..b81f50007 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-20.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-20.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-21.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-21.json index 669646f15..fffeb7482 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-21.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-21.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-22.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-22.json index 132f20075..887d74483 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-22.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-22.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-23.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-23.json index fbe180ff4..eef5664fd 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-23.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-23.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-24.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-24.json index 864eed508..78a8933f3 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-24.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-24.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-25.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-25.json index 6ae1620e2..f3e8c9a3e 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-25.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-25.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-26.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-26.json index d5c7a7d3a..66042b1d7 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-26.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-26.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-27.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-27.json index 6463a7ba8..213cd4cc1 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-27.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-27.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-28.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-28.json index 4a284bb39..39921fe6b 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-28.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-28.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-29.json b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-29.json index 611c5355d..e0ab26f7b 100644 --- a/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-29.json +++ b/tests/BigProjects/ExternalProjects/data/DataStructure/output/BOP_Q_Review_1-29.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/MD_DEMO/data/DataStructure/output/DEMO1-val.valResult_nonFiltered.json b/tests/BigProjects/MD_DEMO/data/DataStructure/output/DEMO1-val.valResult_nonFiltered.json index 09cfe09e8..1626c8ef4 100644 --- a/tests/BigProjects/MD_DEMO/data/DataStructure/output/DEMO1-val.valResult_nonFiltered.json +++ b/tests/BigProjects/MD_DEMO/data/DataStructure/output/DEMO1-val.valResult_nonFiltered.json @@ -102,7 +102,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true }, { diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-12.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-12.json index a1903eccd..bbb5c669a 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-12.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-12.json @@ -126,7 +126,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-13.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-13.json index 6ff89eef0..412786e8c 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-13.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-13.json @@ -126,7 +126,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-14.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-14.json index 79346ef77..eaa4856e0 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-14.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-14.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-15.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-15.json index bd7eaf6cc..a8d870e54 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-15.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-15.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-16.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-16.json index 5c1fccbcc..59d79582b 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-16.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-16.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-17.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-17.json index e56da5806..109fea015 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-17.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-17.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-18.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-18.json index dd5ef39c0..6cf91ed36 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-18.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-18.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-19.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-19.json index cc53b025e..5eb7039f4 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-19.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-19.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-20.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-20.json index 8b16f25f5..24e7cf16a 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-20.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-20.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-21.json b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-21.json index 1d121e082..8265e1086 100644 --- a/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-21.json +++ b/tests/BigProjects/NBB_bop/data/DataStructure/output/VALIDATIONS-21.json @@ -132,7 +132,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-100.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-100.json index 3f6c71d23..27eed9df0 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-100.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-100.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-101.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-101.json index 6c3753dc5..cc4c01cce 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-101.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-101.json @@ -174,7 +174,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-102.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-102.json index 81430cbd2..38e749b47 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-102.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-102.json @@ -318,7 +318,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-117.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-117.json index fa66164dd..322df9595 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-117.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-117.json @@ -78,7 +78,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-119.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-119.json index 0c7321cc6..c03b974aa 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-119.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-119.json @@ -240,7 +240,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-121.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-121.json index ce60f77a0..8a3e13134 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-121.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-121.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-123.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-123.json index 7ed958059..6061da6ae 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-123.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-123.json @@ -78,7 +78,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-125.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-125.json index 6b71eb24b..c5cd66217 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-125.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-125.json @@ -270,7 +270,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-127.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-127.json index 6b0fd4ad0..b320d2e12 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-127.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-127.json @@ -192,7 +192,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-129.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-129.json index 7b6c272fe..85daa493e 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-129.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-129.json @@ -102,7 +102,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-131.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-131.json index cc0948401..040d1d522 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-131.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-131.json @@ -366,7 +366,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-16.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-16.json index 1f064ce46..7865805f4 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-16.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-16.json @@ -204,7 +204,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-185.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-185.json index 36a5bf3dc..85f70a1ab 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-185.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-185.json @@ -432,7 +432,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-48.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-48.json index c3bbf4e36..87ef41d59 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-48.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-48.json @@ -228,7 +228,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-50.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-50.json index 8cafd307f..4112ffd96 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-50.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-50.json @@ -504,7 +504,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-54.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-54.json index e4cc04b35..ac5bc2d5d 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-54.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-54.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-58.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-58.json index dd7d1cb9d..46d5cd559 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-58.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-58.json @@ -84,7 +84,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-60.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-60.json index 291334360..617b53d03 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-60.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-60.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-69.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-69.json index 5086f8666..218ad7c95 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-69.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-69.json @@ -78,7 +78,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-71.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-71.json index ca4ea6493..d8463a4eb 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-71.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-71.json @@ -54,7 +54,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-73.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-73.json index a7a4328b6..7bd569148 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-73.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-73.json @@ -450,7 +450,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-79.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-79.json index deb809645..11e6ace31 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-79.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-79.json @@ -264,7 +264,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-96.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-96.json index f2878703c..b6afa1db0 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-96.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-96.json @@ -186,7 +186,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-97.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-97.json index 4d7b5a638..f1e05abad 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-97.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-97.json @@ -186,7 +186,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-98.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-98.json index c0d39a2f7..7583ea4a4 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-98.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-98.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-99.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-99.json index 1086c7a80..01b1322d5 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-99.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_1-99.json @@ -192,7 +192,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-100.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-100.json index 3f6c71d23..27eed9df0 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-100.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-100.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-101.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-101.json index 6c3753dc5..cc4c01cce 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-101.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-101.json @@ -174,7 +174,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-102.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-102.json index 81430cbd2..38e749b47 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-102.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-102.json @@ -318,7 +318,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-117.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-117.json index fa66164dd..322df9595 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-117.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-117.json @@ -78,7 +78,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-119.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-119.json index 0c7321cc6..c03b974aa 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-119.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-119.json @@ -240,7 +240,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-121.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-121.json index ce60f77a0..8a3e13134 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-121.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-121.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-123.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-123.json index 7ed958059..6061da6ae 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-123.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-123.json @@ -78,7 +78,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-125.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-125.json index 6b71eb24b..c5cd66217 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-125.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-125.json @@ -270,7 +270,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-127.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-127.json index 6b0fd4ad0..b320d2e12 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-127.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-127.json @@ -192,7 +192,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-129.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-129.json index 7b6c272fe..85daa493e 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-129.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-129.json @@ -102,7 +102,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-131.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-131.json index cc0948401..040d1d522 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-131.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-131.json @@ -366,7 +366,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-16.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-16.json index 1f064ce46..7865805f4 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-16.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-16.json @@ -204,7 +204,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-185.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-185.json index 36a5bf3dc..85f70a1ab 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-185.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-185.json @@ -432,7 +432,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-48.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-48.json index c3bbf4e36..87ef41d59 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-48.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-48.json @@ -228,7 +228,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-50.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-50.json index 8cafd307f..4112ffd96 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-50.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-50.json @@ -504,7 +504,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-54.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-54.json index e4cc04b35..ac5bc2d5d 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-54.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-54.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-58.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-58.json index dd7d1cb9d..46d5cd559 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-58.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-58.json @@ -84,7 +84,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-60.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-60.json index 291334360..617b53d03 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-60.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-60.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-69.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-69.json index 5086f8666..218ad7c95 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-69.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-69.json @@ -78,7 +78,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-71.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-71.json index ca4ea6493..d8463a4eb 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-71.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-71.json @@ -54,7 +54,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-73.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-73.json index a7a4328b6..7bd569148 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-73.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-73.json @@ -450,7 +450,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-79.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-79.json index deb809645..11e6ace31 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-79.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-79.json @@ -264,7 +264,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-96.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-96.json index f2878703c..b6afa1db0 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-96.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-96.json @@ -186,7 +186,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-97.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-97.json index 4d7b5a638..f1e05abad 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-97.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-97.json @@ -186,7 +186,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-98.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-98.json index c0d39a2f7..7583ea4a4 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-98.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-98.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-99.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-99.json index 1086c7a80..01b1322d5 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-99.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Monthly_validations_2-99.json @@ -192,7 +192,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-12.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-12.json index 987200ade..872686914 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-12.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-12.json @@ -258,7 +258,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-14.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-14.json index d663b212c..b1db1fb76 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-14.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-14.json @@ -228,7 +228,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-17.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-17.json index 78a36a04d..bfeeda1eb 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-17.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-17.json @@ -390,7 +390,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-19.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-19.json index 77fb614a2..2f1ddb01f 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-19.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-19.json @@ -510,7 +510,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-21.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-21.json index 4914916e1..8796de1a6 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-21.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-21.json @@ -366,7 +366,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-22.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-22.json index 6c3753dc5..cc4c01cce 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-22.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-22.json @@ -174,7 +174,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-23.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-23.json index f2cf6e667..033793f93 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-23.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-23.json @@ -234,7 +234,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-8.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-8.json index 3cf288255..b3b478f2b 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-8.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_1-8.json @@ -642,7 +642,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-12.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-12.json index 987200ade..872686914 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-12.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-12.json @@ -258,7 +258,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-14.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-14.json index d663b212c..b1db1fb76 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-14.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-14.json @@ -228,7 +228,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-17.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-17.json index 78a36a04d..bfeeda1eb 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-17.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-17.json @@ -390,7 +390,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-19.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-19.json index 77fb614a2..2f1ddb01f 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-19.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-19.json @@ -510,7 +510,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-21.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-21.json index 4914916e1..8796de1a6 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-21.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-21.json @@ -366,7 +366,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-22.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-22.json index 6c3753dc5..cc4c01cce 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-22.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-22.json @@ -174,7 +174,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-23.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-23.json index f2cf6e667..033793f93 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-23.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-23.json @@ -234,7 +234,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-8.json b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-8.json index 3cf288255..b3b478f2b 100644 --- a/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-8.json +++ b/tests/BigProjects/NewExternalProjects/data/DataStructure/output/AnaVal_Quarterly_validations_2-8.json @@ -642,7 +642,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/GL_117_1-1.json b/tests/Bugs/data/DataStructure/output/GL_117_1-1.json index 5424653a2..4fe218777 100644 --- a/tests/Bugs/data/DataStructure/output/GL_117_1-1.json +++ b/tests/Bugs/data/DataStructure/output/GL_117_1-1.json @@ -180,7 +180,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/GL_117_2-1.json b/tests/Bugs/data/DataStructure/output/GL_117_2-1.json index f0fac6ad7..501f1b959 100644 --- a/tests/Bugs/data/DataStructure/output/GL_117_2-1.json +++ b/tests/Bugs/data/DataStructure/output/GL_117_2-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/GL_117_3-1.json b/tests/Bugs/data/DataStructure/output/GL_117_3-1.json index e47fcc831..20d384e7c 100644 --- a/tests/Bugs/data/DataStructure/output/GL_117_3-1.json +++ b/tests/Bugs/data/DataStructure/output/GL_117_3-1.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/GL_117_4-1.json b/tests/Bugs/data/DataStructure/output/GL_117_4-1.json index dde3a7035..22059a383 100644 --- a/tests/Bugs/data/DataStructure/output/GL_117_4-1.json +++ b/tests/Bugs/data/DataStructure/output/GL_117_4-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/GL_19-1.json b/tests/Bugs/data/DataStructure/output/GL_19-1.json index f35dbf328..65d80d9d0 100644 --- a/tests/Bugs/data/DataStructure/output/GL_19-1.json +++ b/tests/Bugs/data/DataStructure/output/GL_19-1.json @@ -204,7 +204,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/GL_269-1.json b/tests/Bugs/data/DataStructure/output/GL_269-1.json index fc22d20cf..647aecb10 100644 --- a/tests/Bugs/data/DataStructure/output/GL_269-1.json +++ b/tests/Bugs/data/DataStructure/output/GL_269-1.json @@ -54,7 +54,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/GL_53-1.json b/tests/Bugs/data/DataStructure/output/GL_53-1.json index 392a5ce9c..85e5c1f28 100644 --- a/tests/Bugs/data/DataStructure/output/GL_53-1.json +++ b/tests/Bugs/data/DataStructure/output/GL_53-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Bugs/data/DataStructure/output/VTLEN_563-DS_r.json b/tests/Bugs/data/DataStructure/output/VTLEN_563-DS_r.json index bb5815ddf..2b89ab1ff 100644 --- a/tests/Bugs/data/DataStructure/output/VTLEN_563-DS_r.json +++ b/tests/Bugs/data/DataStructure/output/VTLEN_563-DS_r.json @@ -342,7 +342,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Complete_VTL_Grammar/data/DataStructure/output/reference.json b/tests/Complete_VTL_Grammar/data/DataStructure/output/reference.json index 94a2f9894..33aa918d5 100644 --- a/tests/Complete_VTL_Grammar/data/DataStructure/output/reference.json +++ b/tests/Complete_VTL_Grammar/data/DataStructure/output/reference.json @@ -2638,7 +2638,7 @@ }, { "name": "errorlevel", - "type": "Number", + "type": "Integer", "role": "Measure", "nullable": true } @@ -2833,7 +2833,7 @@ }, { "name": "errorlevel", - "type": "Number", + "type": "Integer", "role": "Measure", "nullable": true }, diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-1-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-1-1.json index 10c3de5d1..472d27a28 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-1-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-1-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-10-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-10-1.json index 10c3de5d1..472d27a28 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-10-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-10-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-11-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-11-1.json index 99c80318f..930981a87 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-11-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-11-1.json @@ -48,7 +48,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ], diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-2-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-2-1.json index 287a0b6a8..7ed0148da 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-2-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-2-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-3-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-3-1.json index a092c8034..aa6d59de1 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-3-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-3-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-4-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-4-1.json index 10c3de5d1..472d27a28 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-4-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-4-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-5-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-5-1.json index 287a0b6a8..7ed0148da 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-5-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-5-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-6-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-6-1.json index 287a0b6a8..7ed0148da 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-6-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-6-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-7-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-7-1.json index 10c3de5d1..472d27a28 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-7-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-7-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-8-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-8-1.json index 287a0b6a8..7ed0148da 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-8-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-8-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-9-1.json b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-9-1.json index 10c3de5d1..472d27a28 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/1-1-1-9-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/1-1-1-9-1.json @@ -60,7 +60,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/DatapointRulesets/data/DataStructure/output/GH_844_1-1.json b/tests/DatapointRulesets/data/DataStructure/output/GH_844_1-1.json index 3f127651b..c240f94bb 100644 --- a/tests/DatapointRulesets/data/DataStructure/output/GH_844_1-1.json +++ b/tests/DatapointRulesets/data/DataStructure/output/GH_844_1-1.json @@ -7,7 +7,7 @@ {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "bool_var", "role": "Measure", "type": "Boolean", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, - {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true} + {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true} ] } ] diff --git a/tests/DatapointRulesets/data/ValueDomain/errorlevel_vd_bool.json b/tests/DatapointRulesets/data/ValueDomain/errorlevel_vd_bool.json new file mode 100644 index 000000000..d4861898a --- /dev/null +++ b/tests/DatapointRulesets/data/ValueDomain/errorlevel_vd_bool.json @@ -0,0 +1 @@ +{"name": "errorlevel_vd", "type": "Boolean", "setlist": [true, false]} \ No newline at end of file diff --git a/tests/DatapointRulesets/test_datapoint_rulesets.py b/tests/DatapointRulesets/test_datapoint_rulesets.py index 8abc77e1b..6ab4d6acf 100644 --- a/tests/DatapointRulesets/test_datapoint_rulesets.py +++ b/tests/DatapointRulesets/test_datapoint_rulesets.py @@ -444,7 +444,12 @@ def test_GH_598_2(self): number_inputs = 1 references_names = ["1"] - self.BaseTest(code=code, number_inputs=number_inputs, references_names=references_names) + self.BaseTest( + code=code, + number_inputs=number_inputs, + references_names=references_names, + vd_names=["errorlevel_vd_bool"], + ) def test_GH_598_2_roundtrip(self): """ @@ -461,7 +466,11 @@ def test_GH_598_2_roundtrip(self): text = self.LoadVTL(code) rendered = ASTString().render(create_ast(text)) self.BaseTest( - code=code, number_inputs=number_inputs, references_names=references_names, text=rendered + code=code, + number_inputs=number_inputs, + references_names=references_names, + text=rendered, + vd_names=["errorlevel_vd_bool"], ) def test_GH_844_1(self): diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-1-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-1-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-1-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-1-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-10-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-10-1.json index 0448fa264..c60c3b5ec 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-10-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-10-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-11-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-11-1.json index 0448fa264..c60c3b5ec 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-11-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-11-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-12-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-12-1.json index 0448fa264..c60c3b5ec 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-12-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-12-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-19-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-19-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-19-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-19-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-2-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-2-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-2-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-2-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-20-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-20-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-20-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-20-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-21-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-21-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-21-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-21-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-22-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-22-1.json index 3463ad8a1..77e0254ad 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-22-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-22-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-23-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-23-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-23-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-23-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-24-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-24-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-24-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-24-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-25-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-25-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-25-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-25-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-26-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-26-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-26-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-26-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-27-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-27-1.json index 3463ad8a1..77e0254ad 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-27-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-27-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-28-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-28-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-28-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-28-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-29-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-29-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-29-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-29-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-3-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-3-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-3-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-3-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-30-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-30-1.json index b1dea84ed..0aec0d1b2 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-30-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-30-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-31-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-31-1.json index f2b0127c5..2185674f5 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-31-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-31-1.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-4-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-4-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-4-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-4-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-5-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-5-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-5-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-5-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-6-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-6-1.json index c653bb58a..58af7708c 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-6-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-6-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-7-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-7-1.json index 0448fa264..c60c3b5ec 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-7-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-7-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-8-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-8-1.json index 0448fa264..c60c3b5ec 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-8-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-8-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/1-1-1-9-1.json b/tests/Hierarchical/data/DataStructure/output/1-1-1-9-1.json index 0448fa264..c60c3b5ec 100644 --- a/tests/Hierarchical/data/DataStructure/output/1-1-1-9-1.json +++ b/tests/Hierarchical/data/DataStructure/output/1-1-1-9-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_145_2-1.json b/tests/Hierarchical/data/DataStructure/output/GL_145_2-1.json index 2872ab27f..34f754667 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_145_2-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_145_2-1.json @@ -1 +1 @@ -{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "String", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "String", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_145_4-1.json b/tests/Hierarchical/data/DataStructure/output/GL_145_4-1.json index 2872ab27f..34f754667 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_145_4-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_145_4-1.json @@ -1 +1 @@ -{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "String", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "String", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_1-1.json b/tests/Hierarchical/data/DataStructure/output/GL_265_1-1.json index 77ef134c9..dd9468558 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_1-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_1-1.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_2-1.json b/tests/Hierarchical/data/DataStructure/output/GL_265_2-1.json index 77ef134c9..dd9468558 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_2-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_2-1.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_4-1.json b/tests/Hierarchical/data/DataStructure/output/GL_265_4-1.json index 3baeef164..7400c652e 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_4-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_4-1.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_4-2.json b/tests/Hierarchical/data/DataStructure/output/GL_265_4-2.json index db9e654f5..ea983a36c 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_4-2.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_4-2.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_4-3.json b/tests/Hierarchical/data/DataStructure/output/GL_265_4-3.json index 347b67577..fc08d86f9 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_4-3.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_4-3.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_5-1.json b/tests/Hierarchical/data/DataStructure/output/GL_265_5-1.json index 77ef134c9..dd9468558 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_5-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_5-1.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_5-2.json b/tests/Hierarchical/data/DataStructure/output/GL_265_5-2.json index c20f3bbbc..d8e1fbac9 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_5-2.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_5-2.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_265_5-3.json b/tests/Hierarchical/data/DataStructure/output/GL_265_5-3.json index f9986cd68..abbd8d0f5 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_265_5-3.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_265_5-3.json @@ -108,7 +108,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_275_1-1.json b/tests/Hierarchical/data/DataStructure/output/GL_275_1-1.json index 4c24ba2e8..e23fd1707 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_275_1-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_275_1-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_1-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_1-1.json index 9154944ea..f7e5cbf10 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_1-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_1-1.json @@ -1 +1 @@ -{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_11-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_11-1.json index 9154944ea..f7e5cbf10 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_11-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_11-1.json @@ -1 +1 @@ -{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_13-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_13-1.json index 9154944ea..f7e5cbf10 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_13-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_13-1.json @@ -1 +1 @@ -{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_17-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_17-1.json index 72414fa50..23a9d8ed6 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_17-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_17-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_18-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_18-1.json index 35de2183f..f5c34cc7d 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_18-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_18-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_23-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_23-1.json index 72414fa50..23a9d8ed6 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_23-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_23-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_24-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_24-1.json index 72414fa50..23a9d8ed6 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_24-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_24-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_25-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_25-1.json index 35de2183f..f5c34cc7d 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_25-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_25-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_27-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_27-1.json index 35de2183f..f5c34cc7d 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_27-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_27-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "ACCOUNTING_ENTRY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INT_ACC_ITEM", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "REF_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_30-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_30-1.json index cf6c07eb0..7baffe3e7 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_30-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_30-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE", "role": "Identifier", "type": "Date", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE_STR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE", "role": "Identifier", "type": "Date", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE_STR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_32-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_32-1.json index cf6c07eb0..7baffe3e7 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_32-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_32-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE", "role": "Identifier", "type": "Date", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE_STR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE", "role": "Identifier", "type": "Date", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE_STR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_34-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_34-1.json index cf6c07eb0..7baffe3e7 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_34-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_34-1.json @@ -1 +1 @@ -{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE", "role": "Identifier", "type": "Date", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE_STR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "DS_r", "DataStructure": [{"name": "REF_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE", "role": "Identifier", "type": "Date", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DATE_STR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_5-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_5-1.json index 9154944ea..f7e5cbf10 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_5-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_5-1.json @@ -1 +1 @@ -{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/DataStructure/output/GL_397_9-1.json b/tests/Hierarchical/data/DataStructure/output/GL_397_9-1.json index 9154944ea..f7e5cbf10 100644 --- a/tests/Hierarchical/data/DataStructure/output/GL_397_9-1.json +++ b/tests/Hierarchical/data/DataStructure/output/GL_397_9-1.json @@ -1 +1 @@ -{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "sectors_hier_val_unf", "DataStructure": [{"name": "Id_1", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_2", "role": "Identifier", "type": "Number", "nullable": false}, {"name": "Id_3", "role": "Identifier", "type": "String", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Hierarchical/data/ValueDomain/errorlevel_vd_bool.json b/tests/Hierarchical/data/ValueDomain/errorlevel_vd_bool.json new file mode 100644 index 000000000..d4861898a --- /dev/null +++ b/tests/Hierarchical/data/ValueDomain/errorlevel_vd_bool.json @@ -0,0 +1 @@ +{"name": "errorlevel_vd", "type": "Boolean", "setlist": [true, false]} \ No newline at end of file diff --git a/tests/Hierarchical/test_hierarchical.py b/tests/Hierarchical/test_hierarchical.py index 37225fe76..e9faa78cc 100644 --- a/tests/Hierarchical/test_hierarchical.py +++ b/tests/Hierarchical/test_hierarchical.py @@ -1460,7 +1460,12 @@ def test_GH_598_1(self): number_inputs = 1 references_names = ["1"] - self.BaseTest(code=code, number_inputs=number_inputs, references_names=references_names) + self.BaseTest( + code=code, + number_inputs=number_inputs, + references_names=references_names, + vd_names=["errorlevel_vd_bool"], + ) def test_GH_598_1_roundtrip(self): """ @@ -1477,7 +1482,11 @@ def test_GH_598_1_roundtrip(self): text = self.LoadVTL(code) rendered = ASTString().render(create_ast(text)) self.BaseTest( - code=code, number_inputs=number_inputs, references_names=references_names, text=rendered + code=code, + number_inputs=number_inputs, + references_names=references_names, + text=rendered, + vd_names=["errorlevel_vd_bool"], ) diff --git a/tests/ReferenceManual/data/DataStructure/output/157-DS_r.json b/tests/ReferenceManual/data/DataStructure/output/157-DS_r.json index 26f1df99d..8ef3ba0d0 100644 --- a/tests/ReferenceManual/data/DataStructure/output/157-DS_r.json +++ b/tests/ReferenceManual/data/DataStructure/output/157-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/ReferenceManual/data/DataStructure/output/158-DS_r.json b/tests/ReferenceManual/data/DataStructure/output/158-DS_r.json index b125a0a28..65fed0ec0 100644 --- a/tests/ReferenceManual/data/DataStructure/output/158-DS_r.json +++ b/tests/ReferenceManual/data/DataStructure/output/158-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/ReferenceManual/data/DataStructure/output/159-DS_r.json b/tests/ReferenceManual/data/DataStructure/output/159-DS_r.json index 992b3b9e3..6ab6d5c91 100644 --- a/tests/ReferenceManual/data/DataStructure/output/159-DS_r.json +++ b/tests/ReferenceManual/data/DataStructure/output/159-DS_r.json @@ -42,7 +42,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Semantic/data/DataStructure/output/Sc_24-1.json b/tests/Semantic/data/DataStructure/output/Sc_24-1.json index ba13f71ac..34f8ba1b8 100644 --- a/tests/Semantic/data/DataStructure/output/Sc_24-1.json +++ b/tests/Semantic/data/DataStructure/output/Sc_24-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true }, { diff --git a/tests/Semantic/data/DataStructure/output/Sc_30-1.json b/tests/Semantic/data/DataStructure/output/Sc_30-1.json index ba13f71ac..34f8ba1b8 100644 --- a/tests/Semantic/data/DataStructure/output/Sc_30-1.json +++ b/tests/Semantic/data/DataStructure/output/Sc_30-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true }, { diff --git a/tests/UDO/data/DataStructure/output/GL_65-1.json b/tests/UDO/data/DataStructure/output/GL_65-1.json index 9c61c0df7..f46f287d9 100644 --- a/tests/UDO/data/DataStructure/output/GL_65-1.json +++ b/tests/UDO/data/DataStructure/output/GL_65-1.json @@ -228,7 +228,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ], diff --git a/tests/Validation/data/DataStructure/output/1-1-1-1-1.json b/tests/Validation/data/DataStructure/output/1-1-1-1-1.json index 4981bd050..76c7f1c6f 100644 --- a/tests/Validation/data/DataStructure/output/1-1-1-1-1.json +++ b/tests/Validation/data/DataStructure/output/1-1-1-1-1.json @@ -72,7 +72,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Validation/data/DataStructure/output/1-1-1-2-1.json b/tests/Validation/data/DataStructure/output/1-1-1-2-1.json index 3272ab425..ce424167e 100644 --- a/tests/Validation/data/DataStructure/output/1-1-1-2-1.json +++ b/tests/Validation/data/DataStructure/output/1-1-1-2-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Validation/data/DataStructure/output/1-1-1-7-1.json b/tests/Validation/data/DataStructure/output/1-1-1-7-1.json index 2046ca4a6..b05defd07 100644 --- a/tests/Validation/data/DataStructure/output/1-1-1-7-1.json +++ b/tests/Validation/data/DataStructure/output/1-1-1-7-1.json @@ -66,7 +66,7 @@ { "name": "errorlevel", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true } ] diff --git a/tests/Validation/data/DataStructure/output/1-1-1-8-1.json b/tests/Validation/data/DataStructure/output/1-1-1-8-1.json index ddb4f8218..34e7e5390 100644 --- a/tests/Validation/data/DataStructure/output/1-1-1-8-1.json +++ b/tests/Validation/data/DataStructure/output/1-1-1-8-1.json @@ -6,7 +6,7 @@ { "name": "level", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true }, { diff --git a/tests/Validation/data/DataStructure/output/1-1-1-9-1.json b/tests/Validation/data/DataStructure/output/1-1-1-9-1.json index e337a24b0..b43fdefd6 100644 --- a/tests/Validation/data/DataStructure/output/1-1-1-9-1.json +++ b/tests/Validation/data/DataStructure/output/1-1-1-9-1.json @@ -6,7 +6,7 @@ { "name": "errorlevel_N", "role": "Measure", - "type": "Number", + "type": "Integer", "nullable": true }, { diff --git a/tests/Validation/data/DataStructure/output/GL_446_1-1.json b/tests/Validation/data/DataStructure/output/GL_446_1-1.json index dede97a71..604cd9c7d 100644 --- a/tests/Validation/data/DataStructure/output/GL_446_1-1.json +++ b/tests/Validation/data/DataStructure/output/GL_446_1-1.json @@ -1 +1 @@ -{"datasets": [{"name": "issuer_results", "DataStructure": [{"name": "FREQ", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "STO", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MATURITY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "UNIT_MEASURE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "VALUATION", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITY_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MA_FLAG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "IS_IN_EADB", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITISATION_TYP", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DEBT_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TPH", "role": "Identifier", "type": "String", "nullable": false}, {"name": "NOM_CURR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "COMPILING_ORG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TIME_PERIOD", "role": "Identifier", "type": "Time_Period", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "issuer_results", "DataStructure": [{"name": "FREQ", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "STO", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MATURITY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "UNIT_MEASURE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "VALUATION", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITY_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MA_FLAG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "IS_IN_EADB", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITISATION_TYP", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DEBT_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TPH", "role": "Identifier", "type": "String", "nullable": false}, {"name": "NOM_CURR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "COMPILING_ORG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TIME_PERIOD", "role": "Identifier", "type": "Time_Period", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Validation/data/DataStructure/output/GL_446_1-2.json b/tests/Validation/data/DataStructure/output/GL_446_1-2.json index c46d1a106..eaf38100b 100644 --- a/tests/Validation/data/DataStructure/output/GL_446_1-2.json +++ b/tests/Validation/data/DataStructure/output/GL_446_1-2.json @@ -1 +1 @@ -{"datasets": [{"name": "holder_results", "DataStructure": [{"name": "FREQ", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "STO", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MATURITY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "UNIT_MEASURE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "VALUATION", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITY_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MA_FLAG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "IS_IN_EADB", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITISATION_TYP", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DEBT_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TPH", "role": "Identifier", "type": "String", "nullable": false}, {"name": "NOM_CURR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "COMPILING_ORG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TIME_PERIOD", "role": "Identifier", "type": "Time_Period", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Number", "nullable": true}], "DataPoints": null}]} \ No newline at end of file +{"datasets": [{"name": "holder_results", "DataStructure": [{"name": "FREQ", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_AREA", "role": "Identifier", "type": "String", "nullable": false}, {"name": "HOLDER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "ISSUER_SECTOR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "FUNCTIONAL_CAT", "role": "Identifier", "type": "String", "nullable": false}, {"name": "STO", "role": "Identifier", "type": "String", "nullable": false}, {"name": "INSTR_ASSET", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MATURITY", "role": "Identifier", "type": "String", "nullable": false}, {"name": "UNIT_MEASURE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "VALUATION", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITY_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "MA_FLAG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "IS_IN_EADB", "role": "Identifier", "type": "String", "nullable": false}, {"name": "SECURITISATION_TYP", "role": "Identifier", "type": "String", "nullable": false}, {"name": "DEBT_TYPE", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TPH", "role": "Identifier", "type": "String", "nullable": false}, {"name": "NOM_CURR", "role": "Identifier", "type": "String", "nullable": false}, {"name": "COMPILING_ORG", "role": "Identifier", "type": "String", "nullable": false}, {"name": "TIME_PERIOD", "role": "Identifier", "type": "Time_Period", "nullable": false}, {"name": "OBS_VALUE", "role": "Measure", "type": "Number", "nullable": true}, {"name": "imbalance", "role": "Measure", "type": "Number", "nullable": true}, {"name": "ruleid", "role": "Identifier", "type": "String", "nullable": false}, {"name": "errorcode", "role": "Measure", "type": "String", "nullable": true}, {"name": "errorlevel", "role": "Measure", "type": "Integer", "nullable": true}], "DataPoints": null}]} \ No newline at end of file diff --git a/tests/Validation/data/ValueDomain/errorlevel_vd_bool.json b/tests/Validation/data/ValueDomain/errorlevel_vd_bool.json new file mode 100644 index 000000000..d4861898a --- /dev/null +++ b/tests/Validation/data/ValueDomain/errorlevel_vd_bool.json @@ -0,0 +1 @@ +{"name": "errorlevel_vd", "type": "Boolean", "setlist": [true, false]} \ No newline at end of file diff --git a/tests/Validation/data/ValueDomain/errorlevel_vd_str.json b/tests/Validation/data/ValueDomain/errorlevel_vd_str.json new file mode 100644 index 000000000..efbe14b9e --- /dev/null +++ b/tests/Validation/data/ValueDomain/errorlevel_vd_str.json @@ -0,0 +1 @@ +{"name": "errorlevel_vd", "type": "String", "setlist": ["AA"]} \ No newline at end of file diff --git a/tests/Validation/test_error_typing.py b/tests/Validation/test_error_typing.py index d9c2030ce..96d24bc7a 100644 --- a/tests/Validation/test_error_typing.py +++ b/tests/Validation/test_error_typing.py @@ -1,5 +1,6 @@ +import pandas as pd -from vtlengine import semantic_analysis +from vtlengine import run, semantic_analysis from vtlengine.DataTypes import Integer, String from vtlengine.Model import ValueDomain from vtlengine.Operators.Validation import resolve_error_types @@ -48,3 +49,16 @@ def test_check_datapoint_errorlevel_vd_override(): vds = [{"name": "errorlevel_vd", "setlist": ["high", "low"], "type": "String"}] res = semantic_analysis(script=DPR_SCRIPT, data_structures=DS_STRUCT, value_domains=vds) assert res["DS_r"].components["errorlevel"].data_type == String + + +def test_check_datapoint_run_errorlevel_integer(): + data = {"DS_1": pd.DataFrame({"Id_1": [1, 2], "Me_1": [5.0, 200.0]})} + res = run(script=DPR_SCRIPT, data_structures=DS_STRUCT, datapoints=data) + assert res["DS_r"].components["errorlevel"].data_type == Integer + + +def test_check_datapoint_run_errorlevel_vd_override(): + data = {"DS_1": pd.DataFrame({"Id_1": [1, 2], "Me_1": [5.0, 200.0]})} + vds = [{"name": "errorlevel_vd", "setlist": ["high", "low"], "type": "String"}] + res = run(script=DPR_SCRIPT, data_structures=DS_STRUCT, datapoints=data, value_domains=vds) + assert res["DS_r"].components["errorlevel"].data_type == String diff --git a/tests/Validation/test_validation.py b/tests/Validation/test_validation.py index 0a8e751b7..97592ef20 100644 --- a/tests/Validation/test_validation.py +++ b/tests/Validation/test_validation.py @@ -364,7 +364,12 @@ def test_13(self): number_inputs = 1 references_names = ["1"] - self.BaseTest(code=code, number_inputs=number_inputs, references_names=references_names) + self.BaseTest( + code=code, + number_inputs=number_inputs, + references_names=references_names, + vd_names=["errorlevel_vd_str"], + ) def test_14(self): """ @@ -470,7 +475,12 @@ def test_GH_598_3(self): number_inputs = 1 references_names = ["1"] - self.BaseTest(code=code, number_inputs=number_inputs, references_names=references_names) + self.BaseTest( + code=code, + number_inputs=number_inputs, + references_names=references_names, + vd_names=["errorlevel_vd_bool"], + ) def test_GH_598_3_roundtrip(self): """ @@ -487,5 +497,9 @@ def test_GH_598_3_roundtrip(self): text = self.LoadVTL(code) rendered = ASTString().render(create_ast(text)) self.BaseTest( - code=code, number_inputs=number_inputs, references_names=references_names, text=rendered + code=code, + number_inputs=number_inputs, + references_names=references_names, + text=rendered, + vd_names=["errorlevel_vd_bool"], ) From 07c096ac82a5282f5033cf7e2ab7b6deba2b9f97 Mon Sep 17 00:00:00 2001 From: Alberto Date: Wed, 24 Jun 2026 12:31:42 +0200 Subject: [PATCH 3/6] Add Component.value_domain loaded from data-structure subset Add an optional value_domain field to Component, serialized as the schema's `subset` key only when set, and populate it in both loader branches. Viral attribute propagation now resolves value-domain rules via the real field instead of a getattr fallback. --- src/vtlengine/API/_InternalApi.py | 2 + src/vtlengine/Model/__init__.py | 9 +++- src/vtlengine/ViralPropagation/__init__.py | 8 +--- .../Validation/test_component_value_domain.py | 48 +++++++++++++++++++ 4 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 tests/Validation/test_component_value_domain.py diff --git a/src/vtlengine/API/_InternalApi.py b/src/vtlengine/API/_InternalApi.py index 83a82b97c..02d14696c 100644 --- a/src/vtlengine/API/_InternalApi.py +++ b/src/vtlengine/API/_InternalApi.py @@ -133,6 +133,7 @@ def _load_dataset_from_structure( data_type=scalar_type, role=Role(component["role"]), nullable=component["nullable"], + value_domain=component.get("subset"), ) if "DataStructure" in dataset_json: @@ -147,6 +148,7 @@ def _load_dataset_from_structure( data_type=scalar_type, role=Role(component["role"]), nullable=component["nullable"], + value_domain=component.get("subset"), ) datasets[dataset_name] = Dataset(name=dataset_name, components=components, data=None) diff --git a/src/vtlengine/Model/__init__.py b/src/vtlengine/Model/__init__.py index 6bcc737d2..efe43c141 100644 --- a/src/vtlengine/Model/__init__.py +++ b/src/vtlengine/Model/__init__.py @@ -166,6 +166,7 @@ class Component: data_type: Type[ScalarType] role: Role nullable: bool + value_domain: Optional[str] = None def __post_init__(self) -> None: if self.role == Role.IDENTIFIER and self.nullable: @@ -175,7 +176,7 @@ def __eq__(self, other: Any) -> bool: return self.to_dict() == other.to_dict() def copy(self) -> "Component": - return Component(self.name, self.data_type, self.role, self.nullable) + return Component(self.name, self.data_type, self.role, self.nullable, self.value_domain) @classmethod def from_json(cls, json_str: Any) -> "Component": @@ -186,19 +187,23 @@ def from_json(cls, json_str: Any) -> "Component": SCALAR_TYPES[data_type_value], Role(json_str["role"]), json_str["nullable"], + json_str.get("subset"), ) def to_dict(self) -> Dict[str, Any]: data_type = self.data_type if not inspect.isclass(self.data_type): data_type = self.data_type.__class__ # type: ignore[assignment] - return { + result: Dict[str, Any] = { "name": self.name, "type": DataTypes.SCALAR_TYPES_CLASS_REVERSE[data_type], # Need to check here for NoneType as UDO argument has it "role": self.role.value if self.role is not None else None, # type: ignore[redundant-expr] "nullable": self.nullable, } + if self.value_domain is not None: + result["subset"] = self.value_domain + return result def to_json(self) -> str: return json.dumps(self.to_dict()) diff --git a/src/vtlengine/ViralPropagation/__init__.py b/src/vtlengine/ViralPropagation/__init__.py index 7dc47e8e9..4e76f8d69 100644 --- a/src/vtlengine/ViralPropagation/__init__.py +++ b/src/vtlengine/ViralPropagation/__init__.py @@ -51,15 +51,11 @@ def get_existing(self, signature_type: str, target: str) -> Optional["ViralPropa return rules.get(target) def rule_for(self, component: Any) -> Optional["ViralPropagationRule"]: - """Resolve the rule for a component: variable-level overrides value-domain-level. - - ``component.value_domain`` may not exist yet (added in a later phase); use - getattr so this is forward-compatible. - """ + """Resolve the rule for a component: variable-level overrides value-domain-level.""" rule = self._variable_rules.get(component.name) if rule is not None: return rule - value_domain = getattr(component, "value_domain", None) + value_domain = component.value_domain if value_domain is not None: return self._valuedomain_rules.get(value_domain) return None diff --git a/tests/Validation/test_component_value_domain.py b/tests/Validation/test_component_value_domain.py new file mode 100644 index 000000000..866da6b4b --- /dev/null +++ b/tests/Validation/test_component_value_domain.py @@ -0,0 +1,48 @@ +from vtlengine.API._InternalApi import load_datasets +from vtlengine.DataTypes import Integer, String +from vtlengine.Model import Component, Role + + +def test_component_value_domain_roundtrip(): + c = Component( + name="Me_1", data_type=String, role=Role.MEASURE, nullable=True, value_domain="CL_OBS" + ) + assert c.value_domain == "CL_OBS" + assert c.to_dict()["subset"] == "CL_OBS" + assert Component.from_json(c.to_dict()).value_domain == "CL_OBS" + assert c.copy().value_domain == "CL_OBS" + + +def test_component_value_domain_absent_by_default(): + c = Component(name="Id_1", data_type=Integer, role=Role.IDENTIFIER, nullable=False) + assert c.value_domain is None + assert "subset" not in c.to_dict() + + +def test_loader_populates_value_domain_from_subset(): + structures = { + "datasets": [{"name": "DS_1", "structure": "S_1"}], + "structures": [ + { + "name": "S_1", + "components": [ + { + "name": "Id_1", + "data_type": "Integer", + "role": "Identifier", + "nullable": False, + }, + { + "name": "Me_1", + "data_type": "String", + "role": "Measure", + "nullable": True, + "subset": "CL_OBS", + }, + ], + } + ], + } + datasets, _ = load_datasets(structures) + assert datasets["DS_1"].components["Me_1"].value_domain == "CL_OBS" + assert datasets["DS_1"].components["Id_1"].value_domain is None From a63e41a7566219790914ca1d41c34457d877f7ed Mon Sep 17 00:00:00 2001 From: Alberto Date: Wed, 24 Jun 2026 12:48:40 +0200 Subject: [PATCH 4/6] Validate datapoint value-domain signatures against component value domains. Added new error message --- src/vtlengine/Exceptions/messages.py | 6 +++ src/vtlengine/Interpreter/__init__.py | 20 +++++++++ tests/Semantic/test_semantic.py | 59 +++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) diff --git a/src/vtlengine/Exceptions/messages.py b/src/vtlengine/Exceptions/messages.py index 967203c06..e2264afa6 100644 --- a/src/vtlengine/Exceptions/messages.py +++ b/src/vtlengine/Exceptions/messages.py @@ -581,6 +581,12 @@ "description": "Raised when there are no applicable rules in a Hierarchy Roll-up " "due to missing '=' operators.", }, + "1-1-10-11": { + "message": "At op {op}: Component {comp} is defined on value domain {found} but the " + "ruleset signature expects {expected}.", + "description": "Raised when a component mapped to a value-domain-signature ruleset is " + "defined on a different value domain than the one in the signature.", + }, # General Operators "2-1-12-1": { "message": "At op {op}: Create a null Measure without a Scalar type is not allowed. " diff --git a/src/vtlengine/Interpreter/__init__.py b/src/vtlengine/Interpreter/__init__.py index 357a1109e..ed5cfb34a 100644 --- a/src/vtlengine/Interpreter/__init__.py +++ b/src/vtlengine/Interpreter/__init__.py @@ -1292,6 +1292,26 @@ def visit_DPValidation(self, node: AST.DPValidation) -> Any: expected=dpr_info["params"][i], found=comp_name, ) + if ( + dpr_info is not None + and dpr_info.get("signature_type") == "valuedomain" + and dpr_info.get("params") + ): + vd_names = dpr_info["params"] + for i, comp_name in enumerate(node.components): + comp = dataset_element.components[comp_name] + if ( + comp.value_domain is not None + and i < len(vd_names) + and comp.value_domain != vd_names[i] + ): + raise SemanticError( + "1-1-10-11", + op=CHECK_DATAPOINT, + comp=comp_name, + found=comp.value_domain, + expected=vd_names[i], + ) # Get output mode with default output = node.output.value if node.output else "invalid" diff --git a/tests/Semantic/test_semantic.py b/tests/Semantic/test_semantic.py index f28012dc5..5055089af 100644 --- a/tests/Semantic/test_semantic.py +++ b/tests/Semantic/test_semantic.py @@ -3094,3 +3094,62 @@ def test_exists_in_incompatible_identifiers() -> None: with pytest.raises(SemanticError) as ctx: semantic_analysis(script=script, data_structures=_INCOMPATIBLE_IDS_STRUCTURES) assert ctx.value.args[1] == "1-2-15" + + +# check_datapoint on a value-domain signature: the components mapped via `components ...` +# must be defined on the value domains named in the signature (error 1-1-10-11). Components +# without a declared value domain (no `subset`) are skipped. + +_DP_VD_SIGNATURE_SCRIPT = """ +define datapoint ruleset dpr1 ( valuedomain Id_3, Me_1 ) is + when Id_3 = "CREDIT" then Me_1 >= 0 errorcode "bad" +end datapoint ruleset; +DS_r <- check_datapoint ( DS_1, dpr1 components Id_3, Me_1 invalid ); +""" + + +def _dp_vd_signature_structures(id3_vd, me1_vd): + id3 = {"name": "Id_3", "type": "String", "role": "Identifier", "nullable": False} + me1 = {"name": "Me_1", "type": "Number", "role": "Measure", "nullable": True} + if id3_vd: + id3["subset"] = id3_vd + if me1_vd: + me1["subset"] = me1_vd + return { + "datasets": [ + { + "name": "DS_1", + "DataStructure": [ + {"name": "Id_1", "type": "Integer", "role": "Identifier", "nullable": False}, + id3, + me1, + ], + } + ] + } + + +def test_dp_value_domain_signature_matching_ok() -> None: + """check_datapoint succeeds when mapped components take values on the signature domains.""" + semantic_analysis( + script=_DP_VD_SIGNATURE_SCRIPT, + data_structures=_dp_vd_signature_structures("Id_3", "Me_1"), + ) + + +def test_dp_value_domain_signature_mismatch() -> None: + """check_datapoint fails when a mapped component is on a different value domain (1-1-10-11).""" + with pytest.raises(SemanticError) as ctx: + semantic_analysis( + script=_DP_VD_SIGNATURE_SCRIPT, + data_structures=_dp_vd_signature_structures("WRONG", "Me_1"), + ) + assert ctx.value.args[1] == "1-1-10-11" + + +def test_dp_value_domain_signature_skipped_when_unknown() -> None: + """check_datapoint skips the check for components without a declared value domain.""" + semantic_analysis( + script=_DP_VD_SIGNATURE_SCRIPT, + data_structures=_dp_vd_signature_structures(None, None), + ) From 7389b00571d66820089dfa54800dabeb7de0972d Mon Sep 17 00:00:00 2001 From: Alberto Date: Thu, 25 Jun 2026 11:16:05 +0200 Subject: [PATCH 5/6] Added new tests. --- src/vtlengine/Interpreter/__init__.py | 29 ++++++++ tests/Helper.py | 1 + .../data/DataStructure/input/GH_632_1-1.json | 28 ++++++++ .../data/DataStructure/input/GH_632_2-1.json | 28 ++++++++ .../data/DataStructure/input/GH_632_3-1.json | 28 ++++++++ .../data/DataStructure/input/GH_632_4-1.json | 28 ++++++++ .../data/DataStructure/output/GH_632_1-1.json | 46 +++++++++++++ .../data/DataStructure/output/GH_632_3-1.json | 52 ++++++++++++++ tests/Semantic/data/vtl/GH_632_1.vtl | 4 ++ tests/Semantic/data/vtl/GH_632_2.vtl | 4 ++ tests/Semantic/data/vtl/GH_632_3.vtl | 4 ++ tests/Semantic/data/vtl/GH_632_4.vtl | 4 ++ tests/Semantic/test_semantic.py | 67 ++++--------------- 13 files changed, 270 insertions(+), 53 deletions(-) create mode 100644 tests/Semantic/data/DataStructure/input/GH_632_1-1.json create mode 100644 tests/Semantic/data/DataStructure/input/GH_632_2-1.json create mode 100644 tests/Semantic/data/DataStructure/input/GH_632_3-1.json create mode 100644 tests/Semantic/data/DataStructure/input/GH_632_4-1.json create mode 100644 tests/Semantic/data/DataStructure/output/GH_632_1-1.json create mode 100644 tests/Semantic/data/DataStructure/output/GH_632_3-1.json create mode 100644 tests/Semantic/data/vtl/GH_632_1.vtl create mode 100644 tests/Semantic/data/vtl/GH_632_2.vtl create mode 100644 tests/Semantic/data/vtl/GH_632_3.vtl create mode 100644 tests/Semantic/data/vtl/GH_632_4.vtl diff --git a/src/vtlengine/Interpreter/__init__.py b/src/vtlengine/Interpreter/__init__.py index ed5cfb34a..39db15c06 100644 --- a/src/vtlengine/Interpreter/__init__.py +++ b/src/vtlengine/Interpreter/__init__.py @@ -1189,6 +1189,35 @@ def visit_HROperation(self, node: AST.HROperation) -> Any: # noqa: C901 ) cond_info[cond_comp] = cond_components[i] + if hr_info["node"].signature_type == "valuedomain": + rule_comp = dataset.components.get(component) if component else None + if ( + rule_comp is not None + and rule_comp.value_domain is not None + and rule_comp.value_domain != hr_info["signature"] + ): + raise SemanticError( + "1-1-10-11", + op=node.op, + comp=component, + found=rule_comp.value_domain, + expected=hr_info["signature"], + ) + for i, cond_vd in enumerate(hr_info["condition"]): + cond_comp_obj = dataset.components.get(cond_components[i]) + if ( + cond_comp_obj is not None + and cond_comp_obj.value_domain is not None + and cond_comp_obj.value_domain != cond_vd + ): + raise SemanticError( + "1-1-10-11", + op=node.op, + comp=cond_components[i], + found=cond_comp_obj.value_domain, + expected=cond_vd, + ) + if node.op == HIERARCHY: aux = [] for rule in hr_info["rules"]: diff --git a/tests/Helper.py b/tests/Helper.py index 7113e6ef0..c2578355c 100644 --- a/tests/Helper.py +++ b/tests/Helper.py @@ -76,6 +76,7 @@ def LoadDataset( data_type=SCALAR_TYPES[component["type"]], role=Role(component["role"]), nullable=component["nullable"], + value_domain=component.get("subset"), ) if only_semantic: diff --git a/tests/Semantic/data/DataStructure/input/GH_632_1-1.json b/tests/Semantic/data/DataStructure/input/GH_632_1-1.json new file mode 100644 index 000000000..5f27bbe5b --- /dev/null +++ b/tests/Semantic/data/DataStructure/input/GH_632_1-1.json @@ -0,0 +1,28 @@ +{ + "datasets": [ + { + "name": "DS_1", + "DataStructure": [ + { + "name": "Id_1", + "role": "Identifier", + "type": "Integer", + "nullable": false + }, + { + "name": "Id_3", + "role": "Identifier", + "type": "String", + "nullable": false, + "subset": "Id_3" + }, + { + "name": "Me_1", + "role": "Measure", + "type": "Number", + "nullable": true + } + ] + } + ] +} diff --git a/tests/Semantic/data/DataStructure/input/GH_632_2-1.json b/tests/Semantic/data/DataStructure/input/GH_632_2-1.json new file mode 100644 index 000000000..dbaabcf95 --- /dev/null +++ b/tests/Semantic/data/DataStructure/input/GH_632_2-1.json @@ -0,0 +1,28 @@ +{ + "datasets": [ + { + "name": "DS_1", + "DataStructure": [ + { + "name": "Id_1", + "role": "Identifier", + "type": "Integer", + "nullable": false + }, + { + "name": "Id_3", + "role": "Identifier", + "type": "String", + "nullable": false, + "subset": "WRONG" + }, + { + "name": "Me_1", + "role": "Measure", + "type": "Number", + "nullable": true + } + ] + } + ] +} diff --git a/tests/Semantic/data/DataStructure/input/GH_632_3-1.json b/tests/Semantic/data/DataStructure/input/GH_632_3-1.json new file mode 100644 index 000000000..20a9f08e3 --- /dev/null +++ b/tests/Semantic/data/DataStructure/input/GH_632_3-1.json @@ -0,0 +1,28 @@ +{ + "datasets": [ + { + "name": "DS_1", + "DataStructure": [ + { + "name": "Id_1", + "role": "Identifier", + "type": "Integer", + "nullable": false + }, + { + "name": "Id_2", + "role": "Identifier", + "type": "String", + "nullable": false, + "subset": "Geo" + }, + { + "name": "Me_1", + "role": "Measure", + "type": "Number", + "nullable": true + } + ] + } + ] +} diff --git a/tests/Semantic/data/DataStructure/input/GH_632_4-1.json b/tests/Semantic/data/DataStructure/input/GH_632_4-1.json new file mode 100644 index 000000000..ec4493879 --- /dev/null +++ b/tests/Semantic/data/DataStructure/input/GH_632_4-1.json @@ -0,0 +1,28 @@ +{ + "datasets": [ + { + "name": "DS_1", + "DataStructure": [ + { + "name": "Id_1", + "role": "Identifier", + "type": "Integer", + "nullable": false + }, + { + "name": "Id_2", + "role": "Identifier", + "type": "String", + "nullable": false, + "subset": "WRONG" + }, + { + "name": "Me_1", + "role": "Measure", + "type": "Number", + "nullable": true + } + ] + } + ] +} diff --git a/tests/Semantic/data/DataStructure/output/GH_632_1-1.json b/tests/Semantic/data/DataStructure/output/GH_632_1-1.json new file mode 100644 index 000000000..42cdffb6c --- /dev/null +++ b/tests/Semantic/data/DataStructure/output/GH_632_1-1.json @@ -0,0 +1,46 @@ +{ + "datasets": [ + { + "name": "DS_r", + "DataStructure": [ + { + "name": "Id_1", + "role": "Identifier", + "type": "Integer", + "nullable": false + }, + { + "name": "Id_3", + "role": "Identifier", + "type": "String", + "nullable": false, + "subset": "Id_3" + }, + { + "name": "ruleid", + "role": "Identifier", + "type": "String", + "nullable": false + }, + { + "name": "Me_1", + "role": "Measure", + "type": "Number", + "nullable": true + }, + { + "name": "errorcode", + "role": "Measure", + "type": "String", + "nullable": true + }, + { + "name": "errorlevel", + "role": "Measure", + "type": "Integer", + "nullable": true + } + ] + } + ] +} diff --git a/tests/Semantic/data/DataStructure/output/GH_632_3-1.json b/tests/Semantic/data/DataStructure/output/GH_632_3-1.json new file mode 100644 index 000000000..40eea9bc7 --- /dev/null +++ b/tests/Semantic/data/DataStructure/output/GH_632_3-1.json @@ -0,0 +1,52 @@ +{ + "datasets": [ + { + "name": "DS_r", + "DataStructure": [ + { + "name": "Id_1", + "role": "Identifier", + "type": "Integer", + "nullable": false + }, + { + "name": "Id_2", + "role": "Identifier", + "type": "String", + "nullable": false, + "subset": "Geo" + }, + { + "name": "ruleid", + "role": "Identifier", + "type": "String", + "nullable": false + }, + { + "name": "bool_var", + "role": "Measure", + "type": "Boolean", + "nullable": true + }, + { + "name": "errorcode", + "role": "Measure", + "type": "String", + "nullable": true + }, + { + "name": "errorlevel", + "role": "Measure", + "type": "Integer", + "nullable": true + }, + { + "name": "imbalance", + "role": "Measure", + "type": "Number", + "nullable": true + } + ] + } + ] +} diff --git a/tests/Semantic/data/vtl/GH_632_1.vtl b/tests/Semantic/data/vtl/GH_632_1.vtl new file mode 100644 index 000000000..7ea7d12a4 --- /dev/null +++ b/tests/Semantic/data/vtl/GH_632_1.vtl @@ -0,0 +1,4 @@ +define datapoint ruleset dpr1 ( valuedomain Id_3, Me_1 ) is + when Id_3 = "CREDIT" then Me_1 >= 0 errorcode "bad" +end datapoint ruleset; +DS_r <- check_datapoint ( DS_1, dpr1 components Id_3, Me_1 invalid ); diff --git a/tests/Semantic/data/vtl/GH_632_2.vtl b/tests/Semantic/data/vtl/GH_632_2.vtl new file mode 100644 index 000000000..7ea7d12a4 --- /dev/null +++ b/tests/Semantic/data/vtl/GH_632_2.vtl @@ -0,0 +1,4 @@ +define datapoint ruleset dpr1 ( valuedomain Id_3, Me_1 ) is + when Id_3 = "CREDIT" then Me_1 >= 0 errorcode "bad" +end datapoint ruleset; +DS_r <- check_datapoint ( DS_1, dpr1 components Id_3, Me_1 invalid ); diff --git a/tests/Semantic/data/vtl/GH_632_3.vtl b/tests/Semantic/data/vtl/GH_632_3.vtl new file mode 100644 index 000000000..c06e274ea --- /dev/null +++ b/tests/Semantic/data/vtl/GH_632_3.vtl @@ -0,0 +1,4 @@ +define hierarchical ruleset hr1 ( valuedomain rule Geo ) is + EU = BE + LU + NL +end hierarchical ruleset; +DS_r <- check_hierarchy ( DS_1, hr1 rule Id_2 all ); diff --git a/tests/Semantic/data/vtl/GH_632_4.vtl b/tests/Semantic/data/vtl/GH_632_4.vtl new file mode 100644 index 000000000..c06e274ea --- /dev/null +++ b/tests/Semantic/data/vtl/GH_632_4.vtl @@ -0,0 +1,4 @@ +define hierarchical ruleset hr1 ( valuedomain rule Geo ) is + EU = BE + LU + NL +end hierarchical ruleset; +DS_r <- check_hierarchy ( DS_1, hr1 rule Id_2 all ); diff --git a/tests/Semantic/test_semantic.py b/tests/Semantic/test_semantic.py index 5055089af..d5fd12353 100644 --- a/tests/Semantic/test_semantic.py +++ b/tests/Semantic/test_semantic.py @@ -3096,60 +3096,21 @@ def test_exists_in_incompatible_identifiers() -> None: assert ctx.value.args[1] == "1-2-15" -# check_datapoint on a value-domain signature: the components mapped via `components ...` -# must be defined on the value domains named in the signature (error 1-1-10-11). Components -# without a declared value domain (no `subset`) are skipped. - -_DP_VD_SIGNATURE_SCRIPT = """ -define datapoint ruleset dpr1 ( valuedomain Id_3, Me_1 ) is - when Id_3 = "CREDIT" then Me_1 >= 0 errorcode "bad" -end datapoint ruleset; -DS_r <- check_datapoint ( DS_1, dpr1 components Id_3, Me_1 invalid ); -""" - - -def _dp_vd_signature_structures(id3_vd, me1_vd): - id3 = {"name": "Id_3", "type": "String", "role": "Identifier", "nullable": False} - me1 = {"name": "Me_1", "type": "Number", "role": "Measure", "nullable": True} - if id3_vd: - id3["subset"] = id3_vd - if me1_vd: - me1["subset"] = me1_vd - return { - "datasets": [ - { - "name": "DS_1", - "DataStructure": [ - {"name": "Id_1", "type": "Integer", "role": "Identifier", "nullable": False}, - id3, - me1, - ], - } - ] - } - +class ValueDomainSignatureTests(SemanticHelper): + classTest = "Semantictests.ValueDomainSignatureTests" -def test_dp_value_domain_signature_matching_ok() -> None: - """check_datapoint succeeds when mapped components take values on the signature domains.""" - semantic_analysis( - script=_DP_VD_SIGNATURE_SCRIPT, - data_structures=_dp_vd_signature_structures("Id_3", "Me_1"), - ) + def test_datapoint_value_domain_signature_matching(self): + code = "GH_632_1" + self.BaseTest(code=code, number_inputs=1, references_names=["1"], only_semantic=True) + def test_datapoint_value_domain_signature_mismatch(self): + code = "GH_632_2" + self.NewSemanticExceptionTest(code=code, number_inputs=1, exception_code="1-1-10-11") -def test_dp_value_domain_signature_mismatch() -> None: - """check_datapoint fails when a mapped component is on a different value domain (1-1-10-11).""" - with pytest.raises(SemanticError) as ctx: - semantic_analysis( - script=_DP_VD_SIGNATURE_SCRIPT, - data_structures=_dp_vd_signature_structures("WRONG", "Me_1"), - ) - assert ctx.value.args[1] == "1-1-10-11" - + def test_hierarchy_value_domain_signature_matching(self): + code = "GH_632_3" + self.BaseTest(code=code, number_inputs=1, references_names=["1"], only_semantic=True) -def test_dp_value_domain_signature_skipped_when_unknown() -> None: - """check_datapoint skips the check for components without a declared value domain.""" - semantic_analysis( - script=_DP_VD_SIGNATURE_SCRIPT, - data_structures=_dp_vd_signature_structures(None, None), - ) + def test_hierarchy_value_domain_signature_mismatch(self): + code = "GH_632_4" + self.NewSemanticExceptionTest(code=code, number_inputs=1, exception_code="1-1-10-11") From e4d4ae0ab1ec20d0b41991b7aef6b8f13b013e49 Mon Sep 17 00:00:00 2001 From: Alberto Date: Thu, 25 Jun 2026 11:21:51 +0200 Subject: [PATCH 6/6] cover errorcode_vd override and check operator error typing --- tests/Validation/test_error_typing.py | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/Validation/test_error_typing.py b/tests/Validation/test_error_typing.py index 96d24bc7a..616c07e03 100644 --- a/tests/Validation/test_error_typing.py +++ b/tests/Validation/test_error_typing.py @@ -24,6 +24,10 @@ DS_r <- check_datapoint ( DS_1, dpr1 all ); """ +CHECK_SCRIPT = """ +DS_r <- check ( DS_1 > 0 errorcode "x" errorlevel 1 invalid ); +""" + def test_resolve_error_types_defaults(): assert resolve_error_types(None) == (String, Integer) @@ -51,6 +55,30 @@ def test_check_datapoint_errorlevel_vd_override(): assert res["DS_r"].components["errorlevel"].data_type == String +def test_check_datapoint_errorcode_vd_override(): + vds = [{"name": "errorcode_vd", "setlist": [1, 2], "type": "Integer"}] + res = semantic_analysis(script=DPR_SCRIPT, data_structures=DS_STRUCT, value_domains=vds) + assert res["DS_r"].components["errorcode"].data_type == Integer + + +def test_check_operator_default_types(): + res = semantic_analysis(script=CHECK_SCRIPT, data_structures=DS_STRUCT) + comps = res["DS_r"].components + assert comps["errorcode"].data_type == String + assert comps["errorlevel"].data_type == Integer + + +def test_check_operator_value_domains_override(): + vds = [ + {"name": "errorcode_vd", "setlist": [1, 2], "type": "Integer"}, + {"name": "errorlevel_vd", "setlist": ["high", "low"], "type": "String"}, + ] + res = semantic_analysis(script=CHECK_SCRIPT, data_structures=DS_STRUCT, value_domains=vds) + comps = res["DS_r"].components + assert comps["errorcode"].data_type == Integer + assert comps["errorlevel"].data_type == String + + def test_check_datapoint_run_errorlevel_integer(): data = {"DS_1": pd.DataFrame({"Id_1": [1, 2], "Me_1": [5.0, 200.0]})} res = run(script=DPR_SCRIPT, data_structures=DS_STRUCT, datapoints=data)