Skip to content

Commit 64038d0

Browse files
authored
Merge pull request #43 from dqops/1.9.0
1.9.0
2 parents 796f408 + 5ea080b commit 64038d0

File tree

2,352 files changed

+292967
-46914
lines changed

Some content is hidden

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

2,352 files changed

+292967
-46914
lines changed

.github/workflows/main-publish-release.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
python-version: 3.8
4343

4444
- name: Build with Maven
45-
run: mvn package -DskipTests -DcompressZip=true -Pbuild-with-jdk-11 -Prun-npm
45+
run: mvn package -DskipTests -DcompressZip=true -Pdisable-duckdb-extensions-download -Pbuild-with-jdk-11 -Prun-npm
4646

4747
- uses: juliangruber/read-file-action@v1
4848
name: Read VERSION
@@ -177,7 +177,9 @@ jobs:
177177
headers: |-
178178
content-type: application/zip
179179
180-
- uses: docker-practice/actions-setup-docker@master
180+
- uses: docker/setup-qemu-action@v3
181+
182+
- uses: docker/setup-buildx-action@v3
181183

182184
- uses: mr-smithers-excellent/docker-build-push@v6
183185
name: Build and Push Docker Image

.github/workflows/mvn-build-develop.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ jobs:
5757
key: 'npm'
5858

5959
- name: Build with Maven
60-
run: mvn package -DskipTests -Pbuild-with-jdk-11 -Pdevelopment-build -Prun-npm
60+
run: mvn package -DskipTests -Pbuild-with-jdk-11 -Pdisable-duckdb-extensions-download -Pdevelopment-build -Prun-npm
6161

6262
- name: Save cached npm packages
6363
id: save-cached-npm-packages
@@ -68,7 +68,9 @@ jobs:
6868
dqops/src/main/frontend/node_modules
6969
key: 'npm'
7070

71-
- uses: docker-practice/actions-setup-docker@master
71+
- uses: docker/setup-qemu-action@v3
72+
73+
- uses: docker/setup-buildx-action@v3
7274

7375
- uses: mr-smithers-excellent/docker-build-push@v6
7476
name: Build and Push Docker Image

.run/dqo run.run.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
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.8.0.jar" />
8+
<option name="JAR_PATH" value="$PROJECT_DIR$/dqops/target/dqo-dqops-1.9.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" />
1010
<option name="PROGRAM_PARAMETERS" value="--server.port=8888" />
11-
<option name="WORKING_DIRECTORY" value="C:\dev\dqoado" />
11+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
1212
<option name="ALTERNATIVE_JRE_PATH" value="temurin-17" />
1313
<envs>
1414
<env name="DQO_HOME" value="$PROJECT_DIR$/home" />
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="run app with paid extensions" type="Application" factoryName="Application">
3+
<option name="ALTERNATIVE_JRE_PATH" value="temurin-17" />
4+
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
5+
<classpathModifications>
6+
<entry path="$PROJECT_DIR$/userhome/jars/paid/dqops-paid-bin.jar" />
7+
</classpathModifications>
8+
<envs>
9+
<env name="DQO_HOME" value="$PROJECT_DIR$/home" />
10+
<env name="DQO_USER_HOME" value="$PROJECT_DIR$/userhome" />
11+
<env name="HADOOP_HOME" value="$PROJECT_DIR$/home" />
12+
<env name="AZURE_ENABLE_HTTP_CLIENT_SHARING" value="true" />
13+
</envs>
14+
<option name="MAIN_CLASS_NAME" value="com.dqops.cli.CliApplication" />
15+
<module name="dqo-dqops" />
16+
<option name="PROGRAM_PARAMETERS" value="--server.port=8888 --dqo.webserver.authentication-method=oauth2" />
17+
<shortenClasspath name="ARGS_FILE" />
18+
<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" />
19+
<extension name="software.aws.toolkits.jetbrains.core.execution.JavaAwsConnectionExtension">
20+
<option name="credential" />
21+
<option name="region" />
22+
<option name="useCurrentConnection" value="false" />
23+
</extension>
24+
<method v="2">
25+
<option name="Make" enabled="false" />
26+
</method>
27+
</configuration>
28+
</component>

CHANGELOG.md

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
# 1.8.0
1+
# 1.9.0
22

3-
* Small layout fixes in the UI, mostly related to the colors of issue severity colors
4-
* Documentation for the data quality process and rule mining
5-
* Duplicate record detection check
6-
* Some column-level checks fixed to skip NULL values, instead of treating them as invalid (not passing checks)
7-
* Store data lineage definition (links to source tables)
8-
* Default observability check patterns renamed to data quality policies
9-
* Default quality policy named "default" deleted, and replaced with multiple smaller policies to allow more control
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

Dockerfile

+2
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,6 @@ COPY --from=dqo-libs /workspace/app/lib/target/output/dqo-lib/jars /dqo/app/lib
7676
COPY --from=dqo-libs ${DEPENDENCY}/BOOT-INF/lib /dqo/app/lib
7777
COPY --from=dqo-libs ${DEPENDENCY}/META-INF /dqo/app/META-INF
7878
COPY --from=dqo-libs ${DEPENDENCY}/BOOT-INF/classes /dqo/app
79+
80+
WORKDIR /dqo/userhome
7981
ENTRYPOINT ["/dqo/home/bin/dqo_docker_entrypoint.sh"]

Dockerfile-fast

+2
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,6 @@ COPY --from=dqo-libs ${DEPENDENCY}/jars /dqo/app/lib
5656
COPY --from=dqo-libs ${DEPENDENCY}/expanded/BOOT-INF/lib /dqo/app/lib
5757
COPY --from=dqo-libs ${DEPENDENCY}/expanded/META-INF /dqo/app/META-INF
5858
COPY --from=dqo-libs ${DEPENDENCY}/expanded/BOOT-INF/classes /dqo/app
59+
60+
WORKDIR /dqo/userhome
5961
ENTRYPOINT ["/dqo/home/bin/dqo_docker_entrypoint.sh"]

VERSION

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

distribution/dqo_docker_entrypoint.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ _term() {
2727
trap _term SIGTERM
2828
trap _term SIGINT
2929

30-
exec 3<&0 java $DQO_JAVA_OPTS --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED -cp /dqo/app:/dqo/app/lib/* com.dqops.cli.CliApplication $* <&3 &
30+
exec 3<&0 java $DQO_JAVA_OPTS --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED -cp /dqo/app:/dqo/app/lib/*:/dqo/home/jars/*:/dqo/userhome/jars/*:/dqo/userhome/jars/:/dqo/userhome/jars/paid/* com.dqops.cli.CliApplication $* <&3 &
3131

3232
child=$!
3333
wait $child

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.8.0</version> <!-- DQOps Version, do not touch (changed automatically) -->
14+
<version>1.9.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/api/check_results/get_column_monitoring_checks_results.py

+20
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from ... import errors
88
from ...client import AuthenticatedClient, Client
9+
from ...models.check_results_detailed_load_mode import CheckResultsDetailedLoadMode
910
from ...models.check_results_list_model import CheckResultsListModel
1011
from ...models.check_time_scale import CheckTimeScale
1112
from ...types import UNSET, Response, Unset
@@ -24,6 +25,7 @@ def _get_kwargs(
2425
check_name: Union[Unset, None, str] = UNSET,
2526
category: Union[Unset, None, str] = UNSET,
2627
table_comparison: Union[Unset, None, str] = UNSET,
28+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
2729
max_results_per_check: Union[Unset, None, int] = UNSET,
2830
) -> Dict[str, Any]:
2931

@@ -50,6 +52,12 @@ def _get_kwargs(
5052

5153
params["tableComparison"] = table_comparison
5254

55+
json_load_mode: Union[Unset, None, str] = UNSET
56+
if not isinstance(load_mode, Unset):
57+
json_load_mode = load_mode.value if load_mode else None
58+
59+
params["loadMode"] = json_load_mode
60+
5361
params["maxResultsPerCheck"] = max_results_per_check
5462

5563
params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
@@ -110,6 +118,7 @@ def sync_detailed(
110118
check_name: Union[Unset, None, str] = UNSET,
111119
category: Union[Unset, None, str] = UNSET,
112120
table_comparison: Union[Unset, None, str] = UNSET,
121+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
113122
max_results_per_check: Union[Unset, None, int] = UNSET,
114123
) -> Response[List["CheckResultsListModel"]]:
115124
"""getColumnMonitoringChecksResults
@@ -129,6 +138,7 @@ def sync_detailed(
129138
check_name (Union[Unset, None, str]):
130139
category (Union[Unset, None, str]):
131140
table_comparison (Union[Unset, None, str]):
141+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
132142
max_results_per_check (Union[Unset, None, int]):
133143
134144
Raises:
@@ -151,6 +161,7 @@ def sync_detailed(
151161
check_name=check_name,
152162
category=category,
153163
table_comparison=table_comparison,
164+
load_mode=load_mode,
154165
max_results_per_check=max_results_per_check,
155166
)
156167

@@ -175,6 +186,7 @@ def sync(
175186
check_name: Union[Unset, None, str] = UNSET,
176187
category: Union[Unset, None, str] = UNSET,
177188
table_comparison: Union[Unset, None, str] = UNSET,
189+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
178190
max_results_per_check: Union[Unset, None, int] = UNSET,
179191
) -> Optional[List["CheckResultsListModel"]]:
180192
"""getColumnMonitoringChecksResults
@@ -194,6 +206,7 @@ def sync(
194206
check_name (Union[Unset, None, str]):
195207
category (Union[Unset, None, str]):
196208
table_comparison (Union[Unset, None, str]):
209+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
197210
max_results_per_check (Union[Unset, None, int]):
198211
199212
Raises:
@@ -217,6 +230,7 @@ def sync(
217230
check_name=check_name,
218231
category=category,
219232
table_comparison=table_comparison,
233+
load_mode=load_mode,
220234
max_results_per_check=max_results_per_check,
221235
).parsed
222236

@@ -235,6 +249,7 @@ async def asyncio_detailed(
235249
check_name: Union[Unset, None, str] = UNSET,
236250
category: Union[Unset, None, str] = UNSET,
237251
table_comparison: Union[Unset, None, str] = UNSET,
252+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
238253
max_results_per_check: Union[Unset, None, int] = UNSET,
239254
) -> Response[List["CheckResultsListModel"]]:
240255
"""getColumnMonitoringChecksResults
@@ -254,6 +269,7 @@ async def asyncio_detailed(
254269
check_name (Union[Unset, None, str]):
255270
category (Union[Unset, None, str]):
256271
table_comparison (Union[Unset, None, str]):
272+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
257273
max_results_per_check (Union[Unset, None, int]):
258274
259275
Raises:
@@ -276,6 +292,7 @@ async def asyncio_detailed(
276292
check_name=check_name,
277293
category=category,
278294
table_comparison=table_comparison,
295+
load_mode=load_mode,
279296
max_results_per_check=max_results_per_check,
280297
)
281298

@@ -298,6 +315,7 @@ async def asyncio(
298315
check_name: Union[Unset, None, str] = UNSET,
299316
category: Union[Unset, None, str] = UNSET,
300317
table_comparison: Union[Unset, None, str] = UNSET,
318+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
301319
max_results_per_check: Union[Unset, None, int] = UNSET,
302320
) -> Optional[List["CheckResultsListModel"]]:
303321
"""getColumnMonitoringChecksResults
@@ -317,6 +335,7 @@ async def asyncio(
317335
check_name (Union[Unset, None, str]):
318336
category (Union[Unset, None, str]):
319337
table_comparison (Union[Unset, None, str]):
338+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
320339
max_results_per_check (Union[Unset, None, int]):
321340
322341
Raises:
@@ -341,6 +360,7 @@ async def asyncio(
341360
check_name=check_name,
342361
category=category,
343362
table_comparison=table_comparison,
363+
load_mode=load_mode,
344364
max_results_per_check=max_results_per_check,
345365
)
346366
).parsed

distribution/python/dqops/client/api/check_results/get_column_partitioned_checks_results.py

+20
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from ... import errors
88
from ...client import AuthenticatedClient, Client
9+
from ...models.check_results_detailed_load_mode import CheckResultsDetailedLoadMode
910
from ...models.check_results_list_model import CheckResultsListModel
1011
from ...models.check_time_scale import CheckTimeScale
1112
from ...types import UNSET, Response, Unset
@@ -24,6 +25,7 @@ def _get_kwargs(
2425
check_name: Union[Unset, None, str] = UNSET,
2526
category: Union[Unset, None, str] = UNSET,
2627
table_comparison: Union[Unset, None, str] = UNSET,
28+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
2729
max_results_per_check: Union[Unset, None, int] = UNSET,
2830
) -> Dict[str, Any]:
2931

@@ -50,6 +52,12 @@ def _get_kwargs(
5052

5153
params["tableComparison"] = table_comparison
5254

55+
json_load_mode: Union[Unset, None, str] = UNSET
56+
if not isinstance(load_mode, Unset):
57+
json_load_mode = load_mode.value if load_mode else None
58+
59+
params["loadMode"] = json_load_mode
60+
5361
params["maxResultsPerCheck"] = max_results_per_check
5462

5563
params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
@@ -110,6 +118,7 @@ def sync_detailed(
110118
check_name: Union[Unset, None, str] = UNSET,
111119
category: Union[Unset, None, str] = UNSET,
112120
table_comparison: Union[Unset, None, str] = UNSET,
121+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
113122
max_results_per_check: Union[Unset, None, int] = UNSET,
114123
) -> Response[List["CheckResultsListModel"]]:
115124
"""getColumnPartitionedChecksResults
@@ -129,6 +138,7 @@ def sync_detailed(
129138
check_name (Union[Unset, None, str]):
130139
category (Union[Unset, None, str]):
131140
table_comparison (Union[Unset, None, str]):
141+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
132142
max_results_per_check (Union[Unset, None, int]):
133143
134144
Raises:
@@ -151,6 +161,7 @@ def sync_detailed(
151161
check_name=check_name,
152162
category=category,
153163
table_comparison=table_comparison,
164+
load_mode=load_mode,
154165
max_results_per_check=max_results_per_check,
155166
)
156167

@@ -175,6 +186,7 @@ def sync(
175186
check_name: Union[Unset, None, str] = UNSET,
176187
category: Union[Unset, None, str] = UNSET,
177188
table_comparison: Union[Unset, None, str] = UNSET,
189+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
178190
max_results_per_check: Union[Unset, None, int] = UNSET,
179191
) -> Optional[List["CheckResultsListModel"]]:
180192
"""getColumnPartitionedChecksResults
@@ -194,6 +206,7 @@ def sync(
194206
check_name (Union[Unset, None, str]):
195207
category (Union[Unset, None, str]):
196208
table_comparison (Union[Unset, None, str]):
209+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
197210
max_results_per_check (Union[Unset, None, int]):
198211
199212
Raises:
@@ -217,6 +230,7 @@ def sync(
217230
check_name=check_name,
218231
category=category,
219232
table_comparison=table_comparison,
233+
load_mode=load_mode,
220234
max_results_per_check=max_results_per_check,
221235
).parsed
222236

@@ -235,6 +249,7 @@ async def asyncio_detailed(
235249
check_name: Union[Unset, None, str] = UNSET,
236250
category: Union[Unset, None, str] = UNSET,
237251
table_comparison: Union[Unset, None, str] = UNSET,
252+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
238253
max_results_per_check: Union[Unset, None, int] = UNSET,
239254
) -> Response[List["CheckResultsListModel"]]:
240255
"""getColumnPartitionedChecksResults
@@ -254,6 +269,7 @@ async def asyncio_detailed(
254269
check_name (Union[Unset, None, str]):
255270
category (Union[Unset, None, str]):
256271
table_comparison (Union[Unset, None, str]):
272+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
257273
max_results_per_check (Union[Unset, None, int]):
258274
259275
Raises:
@@ -276,6 +292,7 @@ async def asyncio_detailed(
276292
check_name=check_name,
277293
category=category,
278294
table_comparison=table_comparison,
295+
load_mode=load_mode,
279296
max_results_per_check=max_results_per_check,
280297
)
281298

@@ -298,6 +315,7 @@ async def asyncio(
298315
check_name: Union[Unset, None, str] = UNSET,
299316
category: Union[Unset, None, str] = UNSET,
300317
table_comparison: Union[Unset, None, str] = UNSET,
318+
load_mode: Union[Unset, None, CheckResultsDetailedLoadMode] = UNSET,
301319
max_results_per_check: Union[Unset, None, int] = UNSET,
302320
) -> Optional[List["CheckResultsListModel"]]:
303321
"""getColumnPartitionedChecksResults
@@ -317,6 +335,7 @@ async def asyncio(
317335
check_name (Union[Unset, None, str]):
318336
category (Union[Unset, None, str]):
319337
table_comparison (Union[Unset, None, str]):
338+
load_mode (Union[Unset, None, CheckResultsDetailedLoadMode]):
320339
max_results_per_check (Union[Unset, None, int]):
321340
322341
Raises:
@@ -341,6 +360,7 @@ async def asyncio(
341360
check_name=check_name,
342361
category=category,
343362
table_comparison=table_comparison,
363+
load_mode=load_mode,
344364
max_results_per_check=max_results_per_check,
345365
)
346366
).parsed

0 commit comments

Comments
 (0)