Skip to content

Commit b4ff69b

Browse files
add sqlAssertion rule (#11043) (#18559)
[upstream:32ed20cf417ff8c1ee86a713b03d39147d9c2da2] Signed-off-by: Modular Magician <[email protected]>
1 parent ddfe0f6 commit b4ff69b

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

.changelog/11043.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
dataplex: added `sql_assertion` field to `google_dataplex_datascan` resource
3+
```

google/services/dataplex/resource_dataplex_datascan.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,21 @@ Only relevant if a minValue has been defined. Default = false.`,
403403
},
404404
},
405405
},
406+
"sql_assertion": {
407+
Type: schema.TypeList,
408+
Optional: true,
409+
Description: `Table rule which evaluates whether any row matches invalid state.`,
410+
MaxItems: 1,
411+
Elem: &schema.Resource{
412+
Schema: map[string]*schema.Schema{
413+
"sql_statement": {
414+
Type: schema.TypeString,
415+
Required: true,
416+
Description: `The SQL Statement.`,
417+
},
418+
},
419+
},
420+
},
406421
"statistic_range_expectation": {
407422
Type: schema.TypeList,
408423
Optional: true,
@@ -1223,6 +1238,7 @@ func flattenDataplexDatascanDataQualitySpecRules(v interface{}, d *schema.Resour
12231238
"statistic_range_expectation": flattenDataplexDatascanDataQualitySpecRulesStatisticRangeExpectation(original["statisticRangeExpectation"], d, config),
12241239
"row_condition_expectation": flattenDataplexDatascanDataQualitySpecRulesRowConditionExpectation(original["rowConditionExpectation"], d, config),
12251240
"table_condition_expectation": flattenDataplexDatascanDataQualitySpecRulesTableConditionExpectation(original["tableConditionExpectation"], d, config),
1241+
"sql_assertion": flattenDataplexDatascanDataQualitySpecRulesSqlAssertion(original["sqlAssertion"], d, config),
12261242
})
12271243
}
12281244
return transformed
@@ -1411,6 +1427,23 @@ func flattenDataplexDatascanDataQualitySpecRulesTableConditionExpectationSqlExpr
14111427
return v
14121428
}
14131429

1430+
func flattenDataplexDatascanDataQualitySpecRulesSqlAssertion(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1431+
if v == nil {
1432+
return nil
1433+
}
1434+
original := v.(map[string]interface{})
1435+
if len(original) == 0 {
1436+
return nil
1437+
}
1438+
transformed := make(map[string]interface{})
1439+
transformed["sql_statement"] =
1440+
flattenDataplexDatascanDataQualitySpecRulesSqlAssertionSqlStatement(original["sqlStatement"], d, config)
1441+
return []interface{}{transformed}
1442+
}
1443+
func flattenDataplexDatascanDataQualitySpecRulesSqlAssertionSqlStatement(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
1444+
return v
1445+
}
1446+
14141447
func flattenDataplexDatascanDataProfileSpec(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
14151448
if v == nil {
14161449
return nil
@@ -1854,6 +1887,13 @@ func expandDataplexDatascanDataQualitySpecRules(v interface{}, d tpgresource.Ter
18541887
transformed["tableConditionExpectation"] = transformedTableConditionExpectation
18551888
}
18561889

1890+
transformedSqlAssertion, err := expandDataplexDatascanDataQualitySpecRulesSqlAssertion(original["sql_assertion"], d, config)
1891+
if err != nil {
1892+
return nil, err
1893+
} else if val := reflect.ValueOf(transformedSqlAssertion); val.IsValid() && !tpgresource.IsEmptyValue(val) {
1894+
transformed["sqlAssertion"] = transformedSqlAssertion
1895+
}
1896+
18571897
req = append(req, transformed)
18581898
}
18591899
return req, nil
@@ -2128,6 +2168,29 @@ func expandDataplexDatascanDataQualitySpecRulesTableConditionExpectationSqlExpre
21282168
return v, nil
21292169
}
21302170

2171+
func expandDataplexDatascanDataQualitySpecRulesSqlAssertion(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2172+
l := v.([]interface{})
2173+
if len(l) == 0 || l[0] == nil {
2174+
return nil, nil
2175+
}
2176+
raw := l[0]
2177+
original := raw.(map[string]interface{})
2178+
transformed := make(map[string]interface{})
2179+
2180+
transformedSqlStatement, err := expandDataplexDatascanDataQualitySpecRulesSqlAssertionSqlStatement(original["sql_statement"], d, config)
2181+
if err != nil {
2182+
return nil, err
2183+
} else if val := reflect.ValueOf(transformedSqlStatement); val.IsValid() && !tpgresource.IsEmptyValue(val) {
2184+
transformed["sqlStatement"] = transformedSqlStatement
2185+
}
2186+
2187+
return transformed, nil
2188+
}
2189+
2190+
func expandDataplexDatascanDataQualitySpecRulesSqlAssertionSqlStatement(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
2191+
return v, nil
2192+
}
2193+
21312194
func expandDataplexDatascanDataProfileSpec(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
21322195
l := v.([]interface{})
21332196
if len(l) == 0 {

google/services/dataplex/resource_dataplex_datascan_generated_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,13 @@ resource "google_dataplex_datascan" "full_quality" {
344344
sql_expression = "COUNT(*) > 0"
345345
}
346346
}
347+
348+
rules {
349+
dimension = "VALIDITY"
350+
sql_assertion {
351+
sql_statement = "select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null"
352+
}
353+
}
347354
}
348355
349356

website/docs/r/dataplex_datascan.html.markdown

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,13 @@ resource "google_dataplex_datascan" "full_quality" {
239239
sql_expression = "COUNT(*) > 0"
240240
}
241241
}
242+
243+
rules {
244+
dimension = "VALIDITY"
245+
sql_assertion {
246+
sql_statement = "select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null"
247+
}
248+
}
242249
}
243250
244251
@@ -450,6 +457,11 @@ The following arguments are supported:
450457
Table rule which evaluates whether the provided expression is true.
451458
Structure is [documented below](#nested_table_condition_expectation).
452459

460+
* `sql_assertion` -
461+
(Optional)
462+
Table rule which evaluates whether any row matches invalid state.
463+
Structure is [documented below](#nested_sql_assertion).
464+
453465

454466
<a name="nested_range_expectation"></a>The `range_expectation` block supports:
455467

@@ -522,6 +534,12 @@ The following arguments are supported:
522534
(Required)
523535
The SQL expression.
524536

537+
<a name="nested_sql_assertion"></a>The `sql_assertion` block supports:
538+
539+
* `sql_statement` -
540+
(Required)
541+
The SQL Statement.
542+
525543
<a name="nested_data_profile_spec"></a>The `data_profile_spec` block supports:
526544

527545
* `sampling_percent` -

0 commit comments

Comments
 (0)