Skip to content

Commit 4adf3ef

Browse files
authored
Merge pull request #22 from dqops/1.3.0
1.3.0
2 parents 714b089 + a61499e commit 4adf3ef

File tree

176 files changed

+5165
-1376
lines changed

Some content is hidden

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

176 files changed

+5165
-1376
lines changed

.run/dqo run.run.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
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.2.0.jar" />
8+
<option name="JAR_PATH" value="$PROJECT_DIR$/dqops/target/dqo-dqops-1.3.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" />
1111
<option name="WORKING_DIRECTORY" value="C:\dev\dqoado" />
@@ -14,6 +14,7 @@
1414
<env name="DQO_HOME" value="$PROJECT_DIR$/home" />
1515
<env name="DQO_USER_HOME" value="$PROJECT_DIR$/userhome" />
1616
<env name="HADOOP_HOME" value="$PROJECT_DIR$/home" />
17+
<env name="AZURE_ENABLE_HTTP_CLIENT_SHARING" value="true" />
1718
</envs>
1819
<method v="2" />
1920
</configuration>

CHANGELOG.md

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
# 1.2.0
2-
* Small bug fixes
3-
* Small layout changes (fonts)
4-
* Updates in the documentation
5-
* MySQL and Snowflake drivers upgraded
6-
* Column list shows the status of data quality dimensions
7-
* Corrections of queries for mysql, oracle
8-
* The platform tracks the data quality status of tables and columns
1+
# 1.3.0
2+
* Screens that show a list of tables and the data quality status divided by data quality dimensions
3+
* Analyze nested values in JSON fields
4+
* Analyze files on Azure storage buckets, using the az:// prefix.

Dockerfile

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ ENV DQO_USER_HOME=/dqo/userhome
6161
ENV DQO_USER_INITIALIZE_USER_HOME=true
6262
ENV DQO_USER_INITIALIZE_DEFAULT_CLOUD_CREDENTIALS=true
6363
ENV DQO_LOGGING_CONSOLE_IMMEDIATE_FLUSH=true
64+
ENV AZURE_ENABLE_HTTP_CLIENT_SHARING=true
6465
RUN mkdir $DQO_USER_HOME
6566
RUN touch $DQO_USER_HOME/.DQO_USER_HOME_NOT_MOUNTED
6667
COPY --from=dqo-home /dqo/home home

Dockerfile-fast

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ ENV DQO_USER_HOME=/dqo/userhome
4141
ENV DQO_USER_INITIALIZE_USER_HOME=true
4242
ENV DQO_USER_INITIALIZE_DEFAULT_CLOUD_CREDENTIALS=true
4343
ENV DQO_LOGGING_CONSOLE_IMMEDIATE_FLUSH=true
44+
ENV AZURE_ENABLE_HTTP_CLIENT_SHARING=true
4445
RUN mkdir $DQO_USER_HOME
4546
RUN touch $DQO_USER_HOME/.DQO_USER_HOME_NOT_MOUNTED
4647
COPY --from=dqo-home /dqo/home home

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.2.0
1+
1.3.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.2.0</version> <!-- DQOps Version, do not touch (changed automatically) -->
14+
<version>1.3.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

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
)
2525
from .authenticated_dashboard_model import AuthenticatedDashboardModel
2626
from .aws_authentication_mode import AwsAuthenticationMode
27+
from .azure_authentication_mode import AzureAuthenticationMode
2728
from .between_floats_rule_parameters_spec import BetweenFloatsRuleParametersSpec
2829
from .between_ints_rule_parameters_spec import BetweenIntsRuleParametersSpec
2930
from .between_percent_rule_parameters_spec import BetweenPercentRuleParametersSpec
@@ -1937,6 +1938,7 @@
19371938
"AnomalyStationaryPercentileMovingAverageRuleWarning1PctParametersSpec",
19381939
"AuthenticatedDashboardModel",
19391940
"AwsAuthenticationMode",
1941+
"AzureAuthenticationMode",
19401942
"BetweenFloatsRuleParametersSpec",
19411943
"BetweenIntsRuleParametersSpec",
19421944
"BetweenPercentRuleParametersSpec",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from enum import Enum
2+
3+
4+
class AzureAuthenticationMode(str, Enum):
5+
CONNECTION_STRING = "connection_string"
6+
CREDENTIAL_CHAIN = "credential_chain"
7+
SERVICE_PRINCIPAL = "service_principal"
8+
9+
def __str__(self) -> str:
10+
return str(self.value)

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

+9
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@ class ColumnTypeSnapshotSpec:
1717
length (Union[Unset, int]): Maximum length of text and binary columns.
1818
precision (Union[Unset, int]): Precision of a numeric (decimal) data type.
1919
scale (Union[Unset, int]): Scale of a numeric (decimal) data type.
20+
nested (Union[Unset, bool]): This field is a nested field inside another STRUCT. It is used to identify nested
21+
fields in JSON files.
2022
"""
2123

2224
column_type: Union[Unset, str] = UNSET
2325
nullable: Union[Unset, bool] = UNSET
2426
length: Union[Unset, int] = UNSET
2527
precision: Union[Unset, int] = UNSET
2628
scale: Union[Unset, int] = UNSET
29+
nested: Union[Unset, bool] = UNSET
2730
additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
2831

2932
def to_dict(self) -> Dict[str, Any]:
@@ -32,6 +35,7 @@ def to_dict(self) -> Dict[str, Any]:
3235
length = self.length
3336
precision = self.precision
3437
scale = self.scale
38+
nested = self.nested
3539

3640
field_dict: Dict[str, Any] = {}
3741
field_dict.update(self.additional_properties)
@@ -46,6 +50,8 @@ def to_dict(self) -> Dict[str, Any]:
4650
field_dict["precision"] = precision
4751
if scale is not UNSET:
4852
field_dict["scale"] = scale
53+
if nested is not UNSET:
54+
field_dict["nested"] = nested
4955

5056
return field_dict
5157

@@ -62,12 +68,15 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
6268

6369
scale = d.pop("scale", UNSET)
6470

71+
nested = d.pop("nested", UNSET)
72+
6573
column_type_snapshot_spec = cls(
6674
column_type=column_type,
6775
nullable=nullable,
6876
length=length,
6977
precision=precision,
7078
scale=scale,
79+
nested=nested,
7180
)
7281

7382
column_type_snapshot_spec.additional_properties = d

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

+55
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from attrs import field as _attrs_field
55

66
from ..models.aws_authentication_mode import AwsAuthenticationMode
7+
from ..models.azure_authentication_mode import AzureAuthenticationMode
78
from ..models.duckdb_files_format_type import DuckdbFilesFormatType
89
from ..models.duckdb_read_mode import DuckdbReadMode
910
from ..models.duckdb_storage_type import DuckdbStorageType
@@ -41,12 +42,21 @@ class DuckdbParametersSpec:
4142
must be an absolute path.
4243
storage_type (Union[Unset, DuckdbStorageType]):
4344
aws_authentication_mode (Union[Unset, AwsAuthenticationMode]):
45+
azure_authentication_mode (Union[Unset, AzureAuthenticationMode]):
4446
user (Union[Unset, str]): DuckDB user name for a remote storage type. The value can be in the
4547
${ENVIRONMENT_VARIABLE_NAME} format to use dynamic substitution.
4648
password (Union[Unset, str]): DuckDB password for a remote storage type. The value can be in the
4749
${ENVIRONMENT_VARIABLE_NAME} format to use dynamic substitution.
4850
region (Union[Unset, str]): The region for the storage credentials. The value can be in the
4951
${ENVIRONMENT_VARIABLE_NAME} format to use dynamic substitution.
52+
tenant_id (Union[Unset, str]): Azure Tenant ID used by DuckDB Secret Manager. The value can be in the
53+
${ENVIRONMENT_VARIABLE_NAME} format to use dynamic substitution.
54+
client_id (Union[Unset, str]): Azure Client ID used by DuckDB Secret Manager. The value can be in the
55+
${ENVIRONMENT_VARIABLE_NAME} format to use dynamic substitution.
56+
client_secret (Union[Unset, str]): Azure Client Secret used by DuckDB Secret Manager. The value can be in the
57+
${ENVIRONMENT_VARIABLE_NAME} format to use dynamic substitution.
58+
account_name (Union[Unset, str]): Azure Storage Account Name used by DuckDB Secret Manager. The value can be in
59+
the ${ENVIRONMENT_VARIABLE_NAME} format to use dynamic substitution.
5060
"""
5161

5262
read_mode: Union[Unset, DuckdbReadMode] = UNSET
@@ -59,9 +69,14 @@ class DuckdbParametersSpec:
5969
directories: Union[Unset, "DuckdbParametersSpecDirectories"] = UNSET
6070
storage_type: Union[Unset, DuckdbStorageType] = UNSET
6171
aws_authentication_mode: Union[Unset, AwsAuthenticationMode] = UNSET
72+
azure_authentication_mode: Union[Unset, AzureAuthenticationMode] = UNSET
6273
user: Union[Unset, str] = UNSET
6374
password: Union[Unset, str] = UNSET
6475
region: Union[Unset, str] = UNSET
76+
tenant_id: Union[Unset, str] = UNSET
77+
client_id: Union[Unset, str] = UNSET
78+
client_secret: Union[Unset, str] = UNSET
79+
account_name: Union[Unset, str] = UNSET
6580
additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
6681

6782
def to_dict(self) -> Dict[str, Any]:
@@ -102,9 +117,17 @@ def to_dict(self) -> Dict[str, Any]:
102117
if not isinstance(self.aws_authentication_mode, Unset):
103118
aws_authentication_mode = self.aws_authentication_mode.value
104119

120+
azure_authentication_mode: Union[Unset, str] = UNSET
121+
if not isinstance(self.azure_authentication_mode, Unset):
122+
azure_authentication_mode = self.azure_authentication_mode.value
123+
105124
user = self.user
106125
password = self.password
107126
region = self.region
127+
tenant_id = self.tenant_id
128+
client_id = self.client_id
129+
client_secret = self.client_secret
130+
account_name = self.account_name
108131

109132
field_dict: Dict[str, Any] = {}
110133
field_dict.update(self.additional_properties)
@@ -129,12 +152,22 @@ def to_dict(self) -> Dict[str, Any]:
129152
field_dict["storage_type"] = storage_type
130153
if aws_authentication_mode is not UNSET:
131154
field_dict["aws_authentication_mode"] = aws_authentication_mode
155+
if azure_authentication_mode is not UNSET:
156+
field_dict["azure_authentication_mode"] = azure_authentication_mode
132157
if user is not UNSET:
133158
field_dict["user"] = user
134159
if password is not UNSET:
135160
field_dict["password"] = password
136161
if region is not UNSET:
137162
field_dict["region"] = region
163+
if tenant_id is not UNSET:
164+
field_dict["tenant_id"] = tenant_id
165+
if client_id is not UNSET:
166+
field_dict["client_id"] = client_id
167+
if client_secret is not UNSET:
168+
field_dict["client_secret"] = client_secret
169+
if account_name is not UNSET:
170+
field_dict["account_name"] = account_name
138171

139172
return field_dict
140173

@@ -216,12 +249,29 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
216249
else:
217250
aws_authentication_mode = AwsAuthenticationMode(_aws_authentication_mode)
218251

252+
_azure_authentication_mode = d.pop("azure_authentication_mode", UNSET)
253+
azure_authentication_mode: Union[Unset, AzureAuthenticationMode]
254+
if isinstance(_azure_authentication_mode, Unset):
255+
azure_authentication_mode = UNSET
256+
else:
257+
azure_authentication_mode = AzureAuthenticationMode(
258+
_azure_authentication_mode
259+
)
260+
219261
user = d.pop("user", UNSET)
220262

221263
password = d.pop("password", UNSET)
222264

223265
region = d.pop("region", UNSET)
224266

267+
tenant_id = d.pop("tenant_id", UNSET)
268+
269+
client_id = d.pop("client_id", UNSET)
270+
271+
client_secret = d.pop("client_secret", UNSET)
272+
273+
account_name = d.pop("account_name", UNSET)
274+
225275
duckdb_parameters_spec = cls(
226276
read_mode=read_mode,
227277
files_format_type=files_format_type,
@@ -233,9 +283,14 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
233283
directories=directories,
234284
storage_type=storage_type,
235285
aws_authentication_mode=aws_authentication_mode,
286+
azure_authentication_mode=azure_authentication_mode,
236287
user=user,
237288
password=password,
238289
region=region,
290+
tenant_id=tenant_id,
291+
client_id=client_id,
292+
client_secret=client_secret,
293+
account_name=account_name,
239294
)
240295

241296
duckdb_parameters_spec.additional_properties = d

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

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
class DuckdbStorageType(str, Enum):
5+
AZURE = "azure"
56
LOCAL = "local"
67
S3 = "s3"
78

distribution/python/dqops/version.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
# limit
1616

1717
# WARNING: the next two lines with the version numbers (VERSION =, PIP_VERSION =) should not be modified manually. They are changed by a maven profile at compile time.
18-
VERSION = "1.2.0"
19-
PIP_VERSION = "1.2.0"
18+
VERSION = "1.3.0"
19+
PIP_VERSION = "1.3.0"
2020
GITHUB_RELEASE = "v" + VERSION + ""
2121
JAVA_VERSION = "17"
2222

0 commit comments

Comments
 (0)