Skip to content

Commit 838d2ed

Browse files
authored
Merge pull request #44 from dqops/1.10.0
1.10.0
2 parents 64038d0 + f905d83 commit 838d2ed

File tree

3,301 files changed

+467232
-22911
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,301 files changed

+467232
-22911
lines changed

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ venv/
6666
/site/
6767
/.cache/
6868

69-
# DQO Examples
69+
# DQOps Examples
7070
.localsettings.dqosettings.yaml
7171
.data/
7272
.logs/
@@ -79,3 +79,5 @@ venv/
7979
/home/bin/.duckdb
8080
/home/bin/v0.10.0
8181

82+
# paid components
83+
/home/dqopspaid/

.run/dqo run.run.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<option name="region" />
66
<option name="useCurrentConnection" value="false" />
77
</extension>
8-
<option name="JAR_PATH" value="$PROJECT_DIR$/dqops/target/dqo-dqops-1.9.0.jar" />
8+
<option name="JAR_PATH" value="$PROJECT_DIR$/dqops/target/dqo-dqops-1.10.0.jar" />
99
<option name="VM_PARAMETERS" value="-XX:MaxRAMPercentage=60.0 --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED" />
10-
<option name="PROGRAM_PARAMETERS" value="--server.port=8888" />
10+
<option name="PROGRAM_PARAMETERS" value="--server.port=8888 --dqo.python.debug-mode=silent" />
1111
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
1212
<option name="ALTERNATIVE_JRE_PATH" value="temurin-17" />
1313
<envs>

.run/run app with paid extensions.run.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</envs>
1414
<option name="MAIN_CLASS_NAME" value="com.dqops.cli.CliApplication" />
1515
<module name="dqo-dqops" />
16-
<option name="PROGRAM_PARAMETERS" value="--server.port=8888 --dqo.webserver.authentication-method=oauth2" />
16+
<option name="PROGRAM_PARAMETERS" value="--server.port=8888 --dqo.webserver.authentication-method=oauth2 --dqo.python.debug-mode=failed" />
1717
<shortenClasspath name="ARGS_FILE" />
1818
<option name="VM_PARAMETERS" value="-XX:MaxRAMPercentage=60.0 --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED" />
1919
<extension name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">

CHANGELOG.md

+10-12
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
# 1.9.0
1+
# 1.9.1
2+
3+
* Data lineage editor suggests similar source and target tables
4+
* Fixes in the management of tabs
5+
* ClickHouse connector
6+
* Teradata connector
7+
* Small UI fixes
8+
* Performance improvements in the anomaly detection code
9+
* Other performance optimizations
10+
* Run Python rules in parallel to speed up anomaly detection when tables have a different number of enabled checks
211

3-
* SAP HANA support
4-
* IBM DB2 support
5-
* Improvements to the anomaly rules
6-
* Missing UI for the data domains added
7-
* Incident histogram shows time periods, not the execution day
8-
* Incident notifications fixed to send notifications used a dedicated queue and work even when fallback addresses are not configured
9-
* Data lineage flow diagrams
10-
* Table similarity search to build data lineage
11-
* Table and column screens have a new primary tab to show the data observability status, which is a shortened status
12-
* Basic statistics are scheduled by CRON and reuse the profiling schedule
13-
* Connections support configuring a CRON expression to import new tables

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.9.0
1+
1.10.0

distribution/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>com.dqops</groupId>
1313
<artifactId>dqo-distribution</artifactId>
14-
<version>1.9.0</version> <!-- DQOps Version, do not touch (changed automatically) -->
14+
<version>1.10.0</version> <!-- DQOps Version, do not touch (changed automatically) -->
1515
<name>dqo-distribution</name>
1616
<description>DQOps Data Quality Operations Center final assembly</description>
1717
<packaging>pom</packaging>

distribution/python/dqops/client/models/__init__.py

+36
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@
131131
from .check_template import CheckTemplate
132132
from .check_time_scale import CheckTimeScale
133133
from .check_type import CheckType
134+
from .click_house_parameters_spec import ClickHouseParametersSpec
135+
from .click_house_parameters_spec_properties import ClickHouseParametersSpecProperties
134136
from .cloud_synchronization_folders_status_model import (
135137
CloudSynchronizationFoldersStatusModel,
136138
)
@@ -1094,6 +1096,12 @@
10941096
from .column_sql_import_custom_result_sensor_parameters_spec import (
10951097
ColumnSqlImportCustomResultSensorParametersSpec,
10961098
)
1099+
from .column_sql_invalid_value_count_check_spec import (
1100+
ColumnSqlInvalidValueCountCheckSpec,
1101+
)
1102+
from .column_sql_invalid_value_count_sensor_parameters_spec import (
1103+
ColumnSqlInvalidValueCountSensorParametersSpec,
1104+
)
10971105
from .column_statistics_collectors_root_categories_spec import (
10981106
ColumnStatisticsCollectorsRootCategoriesSpec,
10991107
)
@@ -1552,6 +1560,8 @@
15521560
from .json_records_type import JsonRecordsType
15531561
from .label_model import LabelModel
15541562
from .local_data_domain_model import LocalDataDomainModel
1563+
from .maria_db_parameters_spec import MariaDbParametersSpec
1564+
from .maria_db_parameters_spec_properties import MariaDbParametersSpecProperties
15551565
from .max_count_rule_0_error_parameters_spec import MaxCountRule0ErrorParametersSpec
15561566
from .max_count_rule_0_warning_parameters_spec import MaxCountRule0WarningParametersSpec
15571567
from .max_count_rule_100_parameters_spec import MaxCountRule100ParametersSpec
@@ -1608,6 +1618,7 @@
16081618
from .parquet_file_format_spec import ParquetFileFormatSpec
16091619
from .partition_incremental_time_window_spec import PartitionIncrementalTimeWindowSpec
16101620
from .physical_table_name import PhysicalTableName
1621+
from .postgresql_engine_type import PostgresqlEngineType
16111622
from .postgresql_parameters_spec import PostgresqlParametersSpec
16121623
from .postgresql_parameters_spec_properties import PostgresqlParametersSpecProperties
16131624
from .postgresql_ssl_mode import PostgresqlSslMode
@@ -1623,6 +1634,8 @@
16231634
from .provider_sensor_runner_type import ProviderSensorRunnerType
16241635
from .provider_type import ProviderType
16251636
from .quality_category_model import QualityCategoryModel
1637+
from .quest_db_parameters_spec import QuestDbParametersSpec
1638+
from .quest_db_parameters_spec_properties import QuestDbParametersSpecProperties
16261639
from .redshift_authentication_mode import RedshiftAuthenticationMode
16271640
from .redshift_parameters_spec import RedshiftParametersSpec
16281641
from .redshift_parameters_spec_properties import RedshiftParametersSpecProperties
@@ -1643,6 +1656,7 @@
16431656
from .run_checks_parameters import RunChecksParameters
16441657
from .run_checks_queue_job_result import RunChecksQueueJobResult
16451658
from .run_checks_result import RunChecksResult
1659+
from .run_checks_target import RunChecksTarget
16461660
from .schedule_enabled_status_model import ScheduleEnabledStatusModel
16471661
from .schema_model import SchemaModel
16481662
from .schema_remote_model import SchemaRemoteModel
@@ -1986,6 +2000,12 @@
19862000
from .table_sql_import_custom_result_sensor_parameters_spec import (
19872001
TableSqlImportCustomResultSensorParametersSpec,
19882002
)
2003+
from .table_sql_invalid_record_count_check_spec import (
2004+
TableSqlInvalidRecordCountCheckSpec,
2005+
)
2006+
from .table_sql_invalid_record_count_sensor_parameters_spec import (
2007+
TableSqlInvalidRecordCountSensorParametersSpec,
2008+
)
19892009
from .table_statistics_collectors_root_categories_spec import (
19902010
TableStatisticsCollectorsRootCategoriesSpec,
19912011
)
@@ -2097,6 +2117,8 @@
20972117
from .target_rule_severity_level import TargetRuleSeverityLevel
20982118
from .target_table_pattern_spec import TargetTablePatternSpec
20992119
from .temporal_unit import TemporalUnit
2120+
from .teradata_parameters_spec import TeradataParametersSpec
2121+
from .teradata_parameters_spec_properties import TeradataParametersSpecProperties
21002122
from .text_built_in_date_formats import TextBuiltInDateFormats
21012123
from .time_period_gradient import TimePeriodGradient
21022124
from .time_window_filter_parameters import TimeWindowFilterParameters
@@ -2181,6 +2203,8 @@
21812203
"CheckTemplate",
21822204
"CheckTimeScale",
21832205
"CheckType",
2206+
"ClickHouseParametersSpec",
2207+
"ClickHouseParametersSpecProperties",
21842208
"CloudSynchronizationFoldersStatusModel",
21852209
"CollectErrorSamplesOnTableParameters",
21862210
"CollectErrorSamplesParameters",
@@ -2554,6 +2578,8 @@
25542578
"ColumnSqlConditionPassedPercentSensorParametersSpec",
25552579
"ColumnSqlImportCustomResultCheckSpec",
25562580
"ColumnSqlImportCustomResultSensorParametersSpec",
2581+
"ColumnSqlInvalidValueCountCheckSpec",
2582+
"ColumnSqlInvalidValueCountSensorParametersSpec",
25572583
"ColumnStatisticsCollectorsRootCategoriesSpec",
25582584
"ColumnStatisticsModel",
25592585
"ColumnStringsExpectedTextsInTopValuesCountSensorParametersSpec",
@@ -2796,6 +2822,8 @@
27962822
"JsonRecordsType",
27972823
"LabelModel",
27982824
"LocalDataDomainModel",
2825+
"MariaDbParametersSpec",
2826+
"MariaDbParametersSpecProperties",
27992827
"MaxCountRule0ErrorParametersSpec",
28002828
"MaxCountRule0WarningParametersSpec",
28012829
"MaxCountRule100ParametersSpec",
@@ -2840,6 +2868,7 @@
28402868
"ParquetFileFormatSpec",
28412869
"PartitionIncrementalTimeWindowSpec",
28422870
"PhysicalTableName",
2871+
"PostgresqlEngineType",
28432872
"PostgresqlParametersSpec",
28442873
"PostgresqlParametersSpecProperties",
28452874
"PostgresqlSslMode",
@@ -2853,6 +2882,8 @@
28532882
"ProviderSensorRunnerType",
28542883
"ProviderType",
28552884
"QualityCategoryModel",
2885+
"QuestDbParametersSpec",
2886+
"QuestDbParametersSpecProperties",
28562887
"RedshiftAuthenticationMode",
28572888
"RedshiftParametersSpec",
28582889
"RedshiftParametersSpecProperties",
@@ -2873,6 +2904,7 @@
28732904
"RunChecksParameters",
28742905
"RunChecksQueueJobResult",
28752906
"RunChecksResult",
2907+
"RunChecksTarget",
28762908
"ScheduleEnabledStatusModel",
28772909
"SchemaModel",
28782910
"SchemaRemoteModel",
@@ -3042,6 +3074,8 @@
30423074
"TableSqlConditionPassedPercentSensorParametersSpec",
30433075
"TableSqlImportCustomResultCheckSpec",
30443076
"TableSqlImportCustomResultSensorParametersSpec",
3077+
"TableSqlInvalidRecordCountCheckSpec",
3078+
"TableSqlInvalidRecordCountSensorParametersSpec",
30453079
"TableStatisticsCollectorsRootCategoriesSpec",
30463080
"TableStatisticsModel",
30473081
"TableTimelinessDailyMonitoringChecksSpec",
@@ -3085,6 +3119,8 @@
30853119
"TargetRuleSeverityLevel",
30863120
"TargetTablePatternSpec",
30873121
"TemporalUnit",
3122+
"TeradataParametersSpec",
3123+
"TeradataParametersSpecProperties",
30883124
"TextBuiltInDateFormats",
30893125
"TimePeriodGradient",
30903126
"TimestampColumnsSpec",

distribution/python/dqops/client/models/anomaly_differencing_percentile_moving_average_rule_error_05_pct_parameters_spec.py

+10
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,26 @@ class AnomalyDifferencingPercentileMovingAverageRuleError05PctParametersSpec:
1717
anomaly_percent (Union[Unset, float]): The probability (in percent) that the current sensor readout (measure) is
1818
an anomaly, because the value is outside the regular range of previous readouts. The default time window of 90
1919
time periods (days, etc.) is used, but at least 30 readouts must exist to run the calculation.
20+
use_ai (Union[Unset, bool]): Use an AI model to predict anomalies. WARNING: anomaly detection by AI models is
21+
not supported in an open-source distribution of DQOps. Please contact DQOps support to upgrade your instance to
22+
a closed-source DQOps distribution.
2023
"""
2124

2225
anomaly_percent: Union[Unset, float] = UNSET
26+
use_ai: Union[Unset, bool] = UNSET
2327
additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
2428

2529
def to_dict(self) -> Dict[str, Any]:
2630
anomaly_percent = self.anomaly_percent
31+
use_ai = self.use_ai
2732

2833
field_dict: Dict[str, Any] = {}
2934
field_dict.update(self.additional_properties)
3035
field_dict.update({})
3136
if anomaly_percent is not UNSET:
3237
field_dict["anomaly_percent"] = anomaly_percent
38+
if use_ai is not UNSET:
39+
field_dict["use_ai"] = use_ai
3340

3441
return field_dict
3542

@@ -38,8 +45,11 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
3845
d = src_dict.copy()
3946
anomaly_percent = d.pop("anomaly_percent", UNSET)
4047

48+
use_ai = d.pop("use_ai", UNSET)
49+
4150
anomaly_differencing_percentile_moving_average_rule_error_05_pct_parameters_spec = cls(
4251
anomaly_percent=anomaly_percent,
52+
use_ai=use_ai,
4353
)
4454

4555
anomaly_differencing_percentile_moving_average_rule_error_05_pct_parameters_spec.additional_properties = (

distribution/python/dqops/client/models/anomaly_differencing_percentile_moving_average_rule_fatal_01_pct_parameters_spec.py

+10
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,26 @@ class AnomalyDifferencingPercentileMovingAverageRuleFatal01PctParametersSpec:
1717
anomaly_percent (Union[Unset, float]): The probability (in percent) that the current sensor readout (measure) is
1818
an anomaly, because the value is outside the regular range of previous readouts. The default time window of 90
1919
time periods (days, etc.) is used, but at least 30 readouts must exist to run the calculation.
20+
use_ai (Union[Unset, bool]): Use an AI model to predict anomalies. WARNING: anomaly detection by AI models is
21+
not supported in an open-source distribution of DQOps. Please contact DQOps support to upgrade your instance to
22+
a closed-source DQOps distribution.
2023
"""
2124

2225
anomaly_percent: Union[Unset, float] = UNSET
26+
use_ai: Union[Unset, bool] = UNSET
2327
additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
2428

2529
def to_dict(self) -> Dict[str, Any]:
2630
anomaly_percent = self.anomaly_percent
31+
use_ai = self.use_ai
2732

2833
field_dict: Dict[str, Any] = {}
2934
field_dict.update(self.additional_properties)
3035
field_dict.update({})
3136
if anomaly_percent is not UNSET:
3237
field_dict["anomaly_percent"] = anomaly_percent
38+
if use_ai is not UNSET:
39+
field_dict["use_ai"] = use_ai
3340

3441
return field_dict
3542

@@ -38,8 +45,11 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
3845
d = src_dict.copy()
3946
anomaly_percent = d.pop("anomaly_percent", UNSET)
4047

48+
use_ai = d.pop("use_ai", UNSET)
49+
4150
anomaly_differencing_percentile_moving_average_rule_fatal_01_pct_parameters_spec = cls(
4251
anomaly_percent=anomaly_percent,
52+
use_ai=use_ai,
4353
)
4454

4555
anomaly_differencing_percentile_moving_average_rule_fatal_01_pct_parameters_spec.additional_properties = (

distribution/python/dqops/client/models/anomaly_differencing_percentile_moving_average_rule_warning_1_pct_parameters_spec.py

+10
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,26 @@ class AnomalyDifferencingPercentileMovingAverageRuleWarning1PctParametersSpec:
1717
anomaly_percent (Union[Unset, float]): The probability (in percent) that the current sensor readout (measure) is
1818
an anomaly, because the value is outside the regular range of previous readouts. The default time window of 90
1919
time periods (days, etc.) is used, but at least 30 readouts must exist to run the calculation.
20+
use_ai (Union[Unset, bool]): Use an AI model to predict anomalies. WARNING: anomaly detection by AI models is
21+
not supported in an open-source distribution of DQOps. Please contact DQOps support to upgrade your instance to
22+
a closed-source DQOps distribution.
2023
"""
2124

2225
anomaly_percent: Union[Unset, float] = UNSET
26+
use_ai: Union[Unset, bool] = UNSET
2327
additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
2428

2529
def to_dict(self) -> Dict[str, Any]:
2630
anomaly_percent = self.anomaly_percent
31+
use_ai = self.use_ai
2732

2833
field_dict: Dict[str, Any] = {}
2934
field_dict.update(self.additional_properties)
3035
field_dict.update({})
3136
if anomaly_percent is not UNSET:
3237
field_dict["anomaly_percent"] = anomaly_percent
38+
if use_ai is not UNSET:
39+
field_dict["use_ai"] = use_ai
3340

3441
return field_dict
3542

@@ -38,8 +45,11 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
3845
d = src_dict.copy()
3946
anomaly_percent = d.pop("anomaly_percent", UNSET)
4047

48+
use_ai = d.pop("use_ai", UNSET)
49+
4150
anomaly_differencing_percentile_moving_average_rule_warning_1_pct_parameters_spec = cls(
4251
anomaly_percent=anomaly_percent,
52+
use_ai=use_ai,
4353
)
4454

4555
anomaly_differencing_percentile_moving_average_rule_warning_1_pct_parameters_spec.additional_properties = (

distribution/python/dqops/client/models/anomaly_partition_row_count_rule_error_05_pct_parameters_spec.py

+10
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,26 @@ class AnomalyPartitionRowCountRuleError05PctParametersSpec:
1515
anomaly_percent (Union[Unset, float]): The probability (in percent) that the current daily row count is an
1616
anomaly because the value is outside the regular range of previous partition volume measures. The default time
1717
window of 90 time periods (days, etc.) is used, but at least 30 readouts must exist to run the calculation.
18+
use_ai (Union[Unset, bool]): Use an AI model to predict anomalies. WARNING: anomaly detection by AI models is
19+
not supported in an open-source distribution of DQOps. Please contact DQOps support to upgrade your instance to
20+
a closed-source DQOps distribution.
1821
"""
1922

2023
anomaly_percent: Union[Unset, float] = UNSET
24+
use_ai: Union[Unset, bool] = UNSET
2125
additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
2226

2327
def to_dict(self) -> Dict[str, Any]:
2428
anomaly_percent = self.anomaly_percent
29+
use_ai = self.use_ai
2530

2631
field_dict: Dict[str, Any] = {}
2732
field_dict.update(self.additional_properties)
2833
field_dict.update({})
2934
if anomaly_percent is not UNSET:
3035
field_dict["anomaly_percent"] = anomaly_percent
36+
if use_ai is not UNSET:
37+
field_dict["use_ai"] = use_ai
3138

3239
return field_dict
3340

@@ -36,8 +43,11 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
3643
d = src_dict.copy()
3744
anomaly_percent = d.pop("anomaly_percent", UNSET)
3845

46+
use_ai = d.pop("use_ai", UNSET)
47+
3948
anomaly_partition_row_count_rule_error_05_pct_parameters_spec = cls(
4049
anomaly_percent=anomaly_percent,
50+
use_ai=use_ai,
4151
)
4252

4353
anomaly_partition_row_count_rule_error_05_pct_parameters_spec.additional_properties = (

0 commit comments

Comments
 (0)