<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="dataplex_v1.html">Cloud Dataplex API</a> . <a href="dataplex_v1.projects.html">projects</a> . <a href="dataplex_v1.projects.locations.html">locations</a> . <a href="dataplex_v1.projects.locations.dataScans.html">dataScans</a> . <a href="dataplex_v1.projects.locations.dataScans.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#generateDataQualityRules">generateDataQualityRules(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Generates recommended data quality rules based on the results of a data profiling scan.Use the recommendations to build rules for a data quality scan.</p>
<p class="toc_element">
  <code><a href="#get">get(name, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a DataScanJob resource.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists DataScanJobs under the given DataScan.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="generateDataQualityRules">generateDataQualityRules(name, body=None, x__xgafv=None)</code>
  <pre>Generates recommended data quality rules based on the results of a data profiling scan.Use the recommendations to build rules for a data quality scan.

Args:
  name: string, Required. The name must be one of the following: The name of a data scan with at least one successful, completed data profiling job The name of a successful, completed data profiling job (a data scan job where the job type is data profiling) (required)
  body: object, The request body.
    The object takes the form of:

{ # Request details for generating data quality rule recommendations.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response details for data quality rule recommendations.
  &quot;rule&quot;: [ # The data quality rules that Dataplex Universal Catalog generates based on the results of a data profiling scan.
    { # A rule captures data quality intent about a data source.
      &quot;column&quot;: &quot;A String&quot;, # Optional. The unnested column which this rule is evaluated against.
      &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the rule. The maximum length is 1,024 characters.
      &quot;dimension&quot;: &quot;A String&quot;, # Required. The dimension a rule belongs to. Results are also aggregated at the dimension level. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
      &quot;ignoreNull&quot;: True or False, # Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for the following type of rules: RangeExpectation RegexExpectation SetExpectation UniquenessExpectation
      &quot;name&quot;: &quot;A String&quot;, # Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter.
      &quot;nonNullExpectation&quot;: { # Evaluates whether each column value is null. # Row-level rule which evaluates whether each column value is null.
      },
      &quot;rangeExpectation&quot;: { # Evaluates whether each column value lies between a specified range. # Row-level rule which evaluates whether each column value lies between a specified range.
        &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
        &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
        &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
        &quot;strictMinEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
      },
      &quot;regexExpectation&quot;: { # Evaluates whether each column value matches a specified regex. # Row-level rule which evaluates whether each column value matches a specified regex.
        &quot;regex&quot;: &quot;A String&quot;, # Optional. A regular expression the column value is expected to match.
      },
      &quot;rowConditionExpectation&quot;: { # Evaluates whether each row passes the specified condition.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a boolean value per row as the result.Example: col1 &gt;= 0 AND col2 &lt; 10 # Row-level rule which evaluates whether each row in a table passes the specified condition.
        &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
      },
      &quot;setExpectation&quot;: { # Evaluates whether each column value is contained by a specified set. # Row-level rule which evaluates whether each column value is contained by a specified set.
        &quot;values&quot;: [ # Optional. Expected values for the column value.
          &quot;A String&quot;,
        ],
      },
      &quot;sqlAssertion&quot;: { # A SQL statement that is evaluated to return rows that match an invalid state. If any rows are are returned, this rule fails.The SQL statement must use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax), and must not contain any semicolons.You can use the data reference parameter ${data()} to reference the source table with all of its precondition filters applied. Examples of precondition filters include row filters, incremental data filters, and sampling. For more information, see Data reference parameter (https://cloud.google.com/dataplex/docs/auto-data-quality-overview#data-reference-parameter).Example: SELECT * FROM ${data()} WHERE price &lt; 0 # Aggregate rule which evaluates the number of rows returned for the provided statement. If any rows are returned, this rule fails.
        &quot;sqlStatement&quot;: &quot;A String&quot;, # Optional. The SQL statement.
      },
      &quot;statisticRangeExpectation&quot;: { # Evaluates whether the column aggregate statistic lies between a specified range. # Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range.
        &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
        &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
        &quot;statistic&quot;: &quot;A String&quot;, # Optional. The aggregate metric to evaluate.
        &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
        &quot;strictMinEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
      },
      &quot;suspended&quot;: True or False, # Optional. Whether the Rule is active or suspended. Default is false.
      &quot;tableConditionExpectation&quot;: { # Evaluates whether the provided expression is true.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a scalar boolean result.Example: MIN(col1) &gt;= 0 # Aggregate rule which evaluates whether the provided expression is true for a table.
        &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
      },
      &quot;threshold&quot;: 3.14, # Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules.
      &quot;uniquenessExpectation&quot;: { # Evaluates whether the column has duplicates. # Row-level rule which evaluates whether each column value is unique.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, view=None, x__xgafv=None)</code>
  <pre>Gets a DataScanJob resource.

Args:
  name: string, Required. The resource name of the DataScanJob: projects/{project}/locations/{location_id}/dataScans/{data_scan_id}/jobs/{data_scan_job_id} where project refers to a project_id or project_number and location_id refers to a Google Cloud region. (required)
  view: string, Optional. Select the DataScanJob view to return. Defaults to BASIC.
    Allowed values
      DATA_SCAN_JOB_VIEW_UNSPECIFIED - The API will default to the BASIC view.
      BASIC - Basic view that does not include spec and result.
      FULL - Include everything.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A DataScanJob represents an instance of DataScan execution.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the DataScanJob was created.
  &quot;dataDiscoveryResult&quot;: { # The output of a data discovery scan. # Output only. The result of a data discovery scan.
    &quot;bigqueryPublishing&quot;: { # Describes BigQuery publishing configurations. # Output only. Configuration for metadata publishing.
      &quot;dataset&quot;: &quot;A String&quot;, # Output only. The BigQuery dataset the discovered tables are published to.
      &quot;location&quot;: &quot;A String&quot;, # Output only. The location of the BigQuery publishing dataset.
    },
    &quot;scanStatistics&quot;: { # Describes result statistics of a data scan discovery job. # Output only. Describes result statistics of a data scan discovery job.
      &quot;dataProcessedBytes&quot;: &quot;A String&quot;, # The data processed in bytes.
      &quot;filesExcluded&quot;: 42, # The number of files excluded.
      &quot;filesetsCreated&quot;: 42, # The number of filesets created.
      &quot;filesetsDeleted&quot;: 42, # The number of filesets deleted.
      &quot;filesetsUpdated&quot;: 42, # The number of filesets updated.
      &quot;scannedFileCount&quot;: 42, # The number of files scanned.
      &quot;tablesCreated&quot;: 42, # The number of tables created.
      &quot;tablesDeleted&quot;: 42, # The number of tables deleted.
      &quot;tablesUpdated&quot;: 42, # The number of tables updated.
    },
  },
  &quot;dataDiscoverySpec&quot;: { # Spec for a data discovery scan. # Output only. Settings for a data discovery scan.
    &quot;bigqueryPublishingConfig&quot;: { # Describes BigQuery publishing configurations. # Optional. Configuration for metadata publishing.
      &quot;connection&quot;: &quot;A String&quot;, # Optional. The BigQuery connection used to create BigLake tables. Must be in the form projects/{project_id}/locations/{location_id}/connections/{connection_id}
      &quot;location&quot;: &quot;A String&quot;, # Optional. The location of the BigQuery dataset to publish BigLake external or non-BigLake external tables to. 1. If the Cloud Storage bucket is located in a multi-region bucket, then BigQuery dataset can be in the same multi-region bucket or any single region that is included in the same multi-region bucket. The datascan can be created in any single region that is included in the same multi-region bucket 2. If the Cloud Storage bucket is located in a dual-region bucket, then BigQuery dataset can be located in regions that are included in the dual-region bucket, or in a multi-region that includes the dual-region. The datascan can be created in any single region that is included in the same dual-region bucket. 3. If the Cloud Storage bucket is located in a single region, then BigQuery dataset can be in the same single region or any multi-region bucket that includes the same single region. The datascan will be created in the same single region as the bucket. 4. If the BigQuery dataset is in single region, it must be in the same single region as the datascan.For supported values, refer to https://cloud.google.com/bigquery/docs/locations#supported_locations.
      &quot;project&quot;: &quot;A String&quot;, # Optional. The project of the BigQuery dataset to publish BigLake external or non-BigLake external tables to. If not specified, the project of the Cloud Storage bucket will be used. The format is &quot;projects/{project_id_or_number}&quot;.
      &quot;tableType&quot;: &quot;A String&quot;, # Optional. Determines whether to publish discovered tables as BigLake external tables or non-BigLake external tables.
    },
    &quot;storageConfig&quot;: { # Configurations related to Cloud Storage as the data source. # Cloud Storage related configurations.
      &quot;csvOptions&quot;: { # Describes CSV and similar semi-structured data formats. # Optional. Configuration for CSV data.
        &quot;delimiter&quot;: &quot;A String&quot;, # Optional. The delimiter that is used to separate values. The default is , (comma).
        &quot;encoding&quot;: &quot;A String&quot;, # Optional. The character encoding of the data. The default is UTF-8.
        &quot;headerRows&quot;: 42, # Optional. The number of rows to interpret as header rows that should be skipped when reading data rows.
        &quot;quote&quot;: &quot;A String&quot;, # Optional. The character used to quote column values. Accepts &quot; (double quotation mark) or &#x27; (single quotation mark). If unspecified, defaults to &quot; (double quotation mark).
        &quot;typeInferenceDisabled&quot;: True or False, # Optional. Whether to disable the inference of data types for CSV data. If true, all columns are registered as strings.
      },
      &quot;excludePatterns&quot;: [ # Optional. Defines the data to exclude during discovery. Provide a list of patterns that identify the data to exclude. For Cloud Storage bucket assets, these patterns are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these patterns are interpreted as patterns to match table names.
        &quot;A String&quot;,
      ],
      &quot;includePatterns&quot;: [ # Optional. Defines the data to include during discovery when only a subset of the data should be considered. Provide a list of patterns that identify the data to include. For Cloud Storage bucket assets, these patterns are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these patterns are interpreted as patterns to match table names.
        &quot;A String&quot;,
      ],
      &quot;jsonOptions&quot;: { # Describes JSON data format. # Optional. Configuration for JSON data.
        &quot;encoding&quot;: &quot;A String&quot;, # Optional. The character encoding of the data. The default is UTF-8.
        &quot;typeInferenceDisabled&quot;: True or False, # Optional. Whether to disable the inference of data types for JSON data. If true, all columns are registered as their primitive types (strings, number, or boolean).
      },
    },
  },
  &quot;dataDocumentationResult&quot;: { # The output of a DataDocumentation scan. # Output only. The result of a data documentation scan.
    &quot;tableResult&quot;: { # Generated metadata about the table. # Output only. Table result for insights.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The service-qualified full resource name of the cloud resource. Ex: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID
      &quot;overview&quot;: &quot;A String&quot;, # Output only. Generated description of the table.
      &quot;queries&quot;: [ # Output only. Sample SQL queries for the table.
        { # A sample SQL query in data documentation.
          &quot;description&quot;: &quot;A String&quot;, # Output only. The description for the query.
          &quot;sql&quot;: &quot;A String&quot;, # Output only. The SQL query string which can be executed.
        },
      ],
      &quot;schema&quot;: { # Schema of the table with generated metadata of columns. # Output only. Schema of the table with generated metadata of the columns in the schema.
        &quot;fields&quot;: [ # Output only. The list of columns.
          { # Column of a table with generated metadata and nested fields.
            &quot;description&quot;: &quot;A String&quot;, # Output only. Generated description for columns and fields.
            &quot;fields&quot;: [ # Output only. Nested fields.
              # Object with schema name: GoogleCloudDataplexV1DataDocumentationResultField
            ],
            &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the column.
          },
        ],
      },
    },
  },
  &quot;dataDocumentationSpec&quot;: { # DataDocumentation scan related spec. # Output only. Settings for a data documentation scan.
  },
  &quot;dataProfileResult&quot;: { # DataProfileResult defines the output of DataProfileScan. Each field of the table will have field type specific profile result. # Output only. The result of a data profile scan.
    &quot;postScanActionsResult&quot;: { # The result of post scan actions of DataProfileScan job. # Output only. The result of post scan actions.
      &quot;bigqueryExportResult&quot;: { # The result of BigQuery export post scan action. # Output only. The result of BigQuery export post scan action.
        &quot;message&quot;: &quot;A String&quot;, # Output only. Additional information about the BigQuery exporting.
        &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for the BigQuery exporting.
      },
    },
    &quot;profile&quot;: { # Contains name, type, mode and field type specific profile information. # Output only. The profile information per field.
      &quot;fields&quot;: [ # Output only. List of fields with structural and profile information for each field.
        { # A field within a table.
          &quot;mode&quot;: &quot;A String&quot;, # Output only. The mode of the field. Possible values include: REQUIRED, if it is a required field. NULLABLE, if it is an optional field. REPEATED, if it is a repeated field.
          &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the field.
          &quot;profile&quot;: { # The profile information for each field type. # Output only. Profile information for the corresponding field.
            &quot;distinctRatio&quot;: 3.14, # Output only. Ratio of rows with distinct values against total scanned rows. Not available for complex non-groupable field type, including RECORD, ARRAY, GEOGRAPHY, and JSON, as well as fields with REPEATABLE mode.
            &quot;doubleProfile&quot;: { # The profile information for a double type field. # Double type field information.
              &quot;average&quot;: 3.14, # Output only. Average of non-null values in the scanned data. NaN, if the field has a NaN.
              &quot;max&quot;: 3.14, # Output only. Maximum of non-null values in the scanned data. NaN, if the field has a NaN.
              &quot;min&quot;: 3.14, # Output only. Minimum of non-null values in the scanned data. NaN, if the field has a NaN.
              &quot;quartiles&quot;: [ # Output only. A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of quartile values for the scanned data, occurring in order Q1, median, Q3.
                3.14,
              ],
              &quot;standardDeviation&quot;: 3.14, # Output only. Standard deviation of non-null values in the scanned data. NaN, if the field has a NaN.
            },
            &quot;integerProfile&quot;: { # The profile information for an integer type field. # Integer type field information.
              &quot;average&quot;: 3.14, # Output only. Average of non-null values in the scanned data. NaN, if the field has a NaN.
              &quot;max&quot;: &quot;A String&quot;, # Output only. Maximum of non-null values in the scanned data. NaN, if the field has a NaN.
              &quot;min&quot;: &quot;A String&quot;, # Output only. Minimum of non-null values in the scanned data. NaN, if the field has a NaN.
              &quot;quartiles&quot;: [ # Output only. A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of approximate quartile values for the scanned data, occurring in order Q1, median, Q3.
                &quot;A String&quot;,
              ],
              &quot;standardDeviation&quot;: 3.14, # Output only. Standard deviation of non-null values in the scanned data. NaN, if the field has a NaN.
            },
            &quot;nullRatio&quot;: 3.14, # Output only. Ratio of rows with null value against total scanned rows.
            &quot;stringProfile&quot;: { # The profile information for a string type field. # String type field information.
              &quot;averageLength&quot;: 3.14, # Output only. Average length of non-null values in the scanned data.
              &quot;maxLength&quot;: &quot;A String&quot;, # Output only. Maximum length of non-null values in the scanned data.
              &quot;minLength&quot;: &quot;A String&quot;, # Output only. Minimum length of non-null values in the scanned data.
            },
            &quot;topNValues&quot;: [ # Output only. The list of top N non-null values, frequency and ratio with which they occur in the scanned data. N is 10 or equal to the number of distinct values in the field, whichever is smaller. Not available for complex non-groupable field type, including RECORD, ARRAY, GEOGRAPHY, and JSON, as well as fields with REPEATABLE mode.
              { # Top N non-null values in the scanned data.
                &quot;count&quot;: &quot;A String&quot;, # Output only. Count of the corresponding value in the scanned data.
                &quot;ratio&quot;: 3.14, # Output only. Ratio of the corresponding value in the field against the total number of rows in the scanned data.
                &quot;value&quot;: &quot;A String&quot;, # Output only. String value of a top N non-null value.
              },
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # Output only. The data type retrieved from the schema of the data source. For instance, for a BigQuery native table, it is the BigQuery Table Schema (https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#tablefieldschema). For a Dataplex Universal Catalog Entity, it is the Entity Schema (https://cloud.google.com/dataplex/docs/reference/rpc/google.cloud.dataplex.v1#type_3).
        },
      ],
    },
    &quot;rowCount&quot;: &quot;A String&quot;, # Output only. The count of rows scanned.
    &quot;scannedData&quot;: { # The data scanned during processing (e.g. in incremental DataScan) # Output only. The data scanned for this result.
      &quot;incrementalField&quot;: { # A data range denoted by a pair of start/end values of a field. # The range denoted by values of an incremental field
        &quot;end&quot;: &quot;A String&quot;, # Output only. Value that marks the end of the range.
        &quot;field&quot;: &quot;A String&quot;, # Output only. The field that contains values which monotonically increases over time (e.g. a timestamp column).
        &quot;start&quot;: &quot;A String&quot;, # Output only. Value that marks the start of the range.
      },
    },
  },
  &quot;dataProfileSpec&quot;: { # DataProfileScan related setting. # Output only. Settings for a data profile scan.
    &quot;excludeFields&quot;: { # The specification for fields to include or exclude in data profile scan. # Optional. The fields to exclude from data profile.If specified, the fields will be excluded from data profile, regardless of include_fields value.
      &quot;fieldNames&quot;: [ # Optional. Expected input is a list of fully qualified names of fields as in the schema.Only top-level field names for nested fields are supported. For instance, if &#x27;x&#x27; is of nested field type, listing &#x27;x&#x27; is supported but &#x27;x.y.z&#x27; is not supported. Here &#x27;y&#x27; and &#x27;y.z&#x27; are nested fields of &#x27;x&#x27;.
        &quot;A String&quot;,
      ],
    },
    &quot;includeFields&quot;: { # The specification for fields to include or exclude in data profile scan. # Optional. The fields to include in data profile.If not specified, all fields at the time of profile scan job execution are included, except for ones listed in exclude_fields.
      &quot;fieldNames&quot;: [ # Optional. Expected input is a list of fully qualified names of fields as in the schema.Only top-level field names for nested fields are supported. For instance, if &#x27;x&#x27; is of nested field type, listing &#x27;x&#x27; is supported but &#x27;x.y.z&#x27; is not supported. Here &#x27;y&#x27; and &#x27;y.z&#x27; are nested fields of &#x27;x&#x27;.
        &quot;A String&quot;,
      ],
    },
    &quot;postScanActions&quot;: { # The configuration of post scan actions of DataProfileScan job. # Optional. Actions to take upon job completion..
      &quot;bigqueryExport&quot;: { # The configuration of BigQuery export post scan action. # Optional. If set, results will be exported to the provided BigQuery table.
        &quot;resultsTable&quot;: &quot;A String&quot;, # Optional. The BigQuery table to export DataProfileScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID
      },
    },
    &quot;rowFilter&quot;: &quot;A String&quot;, # Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in BigQuery standard SQL syntax. Example: col1 &gt;= 0 AND col2 &lt; 10
    &quot;samplingPercent&quot;: 3.14, # Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100.
  },
  &quot;dataQualityResult&quot;: { # The output of a DataQualityScan. # Output only. The result of a data quality scan.
    &quot;anomalyDetectionGeneratedAssets&quot;: { # The assets generated by Anomaly Detection Data Scan. # Output only. The generated assets for anomaly detection.
      &quot;dataIntermediateTable&quot;: &quot;A String&quot;, # Output only. The intermediate table for data anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID
      &quot;freshnessIntermediateTable&quot;: &quot;A String&quot;, # Output only. The intermediate table for freshness anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID
      &quot;resultTable&quot;: &quot;A String&quot;, # Output only. The result table for anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID If the result table is set at AnomalyDetectionAssets, the result table here would be the same as the one set in the AnomalyDetectionAssets.result_table.
      &quot;volumeIntermediateTable&quot;: &quot;A String&quot;, # Output only. The intermediate table for volume anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID
    },
    &quot;catalogPublishingStatus&quot;: { # The status of publishing the data scan result as Dataplex Universal Catalog metadata. # Output only. The status of publishing the data scan as Dataplex Universal Catalog metadata.
      &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for catalog publishing.
    },
    &quot;columns&quot;: [ # Output only. A list of results at the column level.A column will have a corresponding DataQualityColumnResult if and only if there is at least one rule with the &#x27;column&#x27; field set to it.
      { # DataQualityColumnResult provides a more detailed, per-column view of the results.
        &quot;column&quot;: &quot;A String&quot;, # Output only. The column specified in the DataQualityRule.
        &quot;dimensions&quot;: [ # Output only. The dimension-level results for this column.
          { # DataQualityDimensionResult provides a more detailed, per-dimension view of the results.
            &quot;dimension&quot;: { # A dimension captures data quality intent about a defined subset of the rules specified. # Output only. The dimension config specified in the DataQualitySpec, as is.
              &quot;name&quot;: &quot;A String&quot;, # Output only. The dimension name a rule belongs to. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
            },
            &quot;passed&quot;: True or False, # Output only. Whether the dimension passed or failed.
            &quot;score&quot;: 3.14, # Output only. The dimension-level data quality score for this data scan job if and only if the &#x27;dimension&#x27; field is set.The score ranges between 0, 100 (up to two decimal points).
          },
        ],
        &quot;passed&quot;: True or False, # Output only. Whether the column passed or failed.
        &quot;score&quot;: 3.14, # Output only. The column-level data quality score for this data scan job if and only if the &#x27;column&#x27; field is set.The score ranges between between 0, 100 (up to two decimal points).
      },
    ],
    &quot;dimensions&quot;: [ # Output only. A list of results at the dimension level.A dimension will have a corresponding DataQualityDimensionResult if and only if there is at least one rule with the &#x27;dimension&#x27; field set to it.
      { # DataQualityDimensionResult provides a more detailed, per-dimension view of the results.
        &quot;dimension&quot;: { # A dimension captures data quality intent about a defined subset of the rules specified. # Output only. The dimension config specified in the DataQualitySpec, as is.
          &quot;name&quot;: &quot;A String&quot;, # Output only. The dimension name a rule belongs to. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
        },
        &quot;passed&quot;: True or False, # Output only. Whether the dimension passed or failed.
        &quot;score&quot;: 3.14, # Output only. The dimension-level data quality score for this data scan job if and only if the &#x27;dimension&#x27; field is set.The score ranges between 0, 100 (up to two decimal points).
      },
    ],
    &quot;passed&quot;: True or False, # Output only. Overall data quality result -- true if all rules passed.
    &quot;postScanActionsResult&quot;: { # The result of post scan actions of DataQualityScan job. # Output only. The result of post scan actions.
      &quot;bigqueryExportResult&quot;: { # The result of BigQuery export post scan action. # Output only. The result of BigQuery export post scan action.
        &quot;message&quot;: &quot;A String&quot;, # Output only. Additional information about the BigQuery exporting.
        &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for the BigQuery exporting.
      },
    },
    &quot;rowCount&quot;: &quot;A String&quot;, # Output only. The count of rows processed.
    &quot;rules&quot;: [ # Output only. A list of all the rules in a job, and their results.
      { # DataQualityRuleResult provides a more detailed, per-rule view of the results.
        &quot;assertionRowCount&quot;: &quot;A String&quot;, # Output only. The number of rows returned by the SQL statement in a SQL assertion rule.This field is only valid for SQL assertion rules.
        &quot;evaluatedCount&quot;: &quot;A String&quot;, # Output only. The number of rows a rule was evaluated against.This field is only valid for row-level type rules.Evaluated count can be configured to either include all rows (default) - with null rows automatically failing rule evaluation, or exclude null rows from the evaluated_count, by setting ignore_nulls = true.This field is not set for rule SqlAssertion.
        &quot;failingRowsQuery&quot;: &quot;A String&quot;, # Output only. The query to find rows that did not pass this rule.This field is only valid for row-level type rules.
        &quot;nullCount&quot;: &quot;A String&quot;, # Output only. The number of rows with null values in the specified column.
        &quot;passRatio&quot;: 3.14, # Output only. The ratio of passed_count / evaluated_count.This field is only valid for row-level type rules.
        &quot;passed&quot;: True or False, # Output only. Whether the rule passed or failed.
        &quot;passedCount&quot;: &quot;A String&quot;, # Output only. The number of rows which passed a rule evaluation.This field is only valid for row-level type rules.This field is not set for rule SqlAssertion.
        &quot;rule&quot;: { # A rule captures data quality intent about a data source. # Output only. The rule specified in the DataQualitySpec, as is.
          &quot;column&quot;: &quot;A String&quot;, # Optional. The unnested column which this rule is evaluated against.
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the rule. The maximum length is 1,024 characters.
          &quot;dimension&quot;: &quot;A String&quot;, # Required. The dimension a rule belongs to. Results are also aggregated at the dimension level. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
          &quot;ignoreNull&quot;: True or False, # Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for the following type of rules: RangeExpectation RegexExpectation SetExpectation UniquenessExpectation
          &quot;name&quot;: &quot;A String&quot;, # Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter.
          &quot;nonNullExpectation&quot;: { # Evaluates whether each column value is null. # Row-level rule which evaluates whether each column value is null.
          },
          &quot;rangeExpectation&quot;: { # Evaluates whether each column value lies between a specified range. # Row-level rule which evaluates whether each column value lies between a specified range.
            &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
            &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
            &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
            &quot;strictMinEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
          },
          &quot;regexExpectation&quot;: { # Evaluates whether each column value matches a specified regex. # Row-level rule which evaluates whether each column value matches a specified regex.
            &quot;regex&quot;: &quot;A String&quot;, # Optional. A regular expression the column value is expected to match.
          },
          &quot;rowConditionExpectation&quot;: { # Evaluates whether each row passes the specified condition.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a boolean value per row as the result.Example: col1 &gt;= 0 AND col2 &lt; 10 # Row-level rule which evaluates whether each row in a table passes the specified condition.
            &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
          },
          &quot;setExpectation&quot;: { # Evaluates whether each column value is contained by a specified set. # Row-level rule which evaluates whether each column value is contained by a specified set.
            &quot;values&quot;: [ # Optional. Expected values for the column value.
              &quot;A String&quot;,
            ],
          },
          &quot;sqlAssertion&quot;: { # A SQL statement that is evaluated to return rows that match an invalid state. If any rows are are returned, this rule fails.The SQL statement must use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax), and must not contain any semicolons.You can use the data reference parameter ${data()} to reference the source table with all of its precondition filters applied. Examples of precondition filters include row filters, incremental data filters, and sampling. For more information, see Data reference parameter (https://cloud.google.com/dataplex/docs/auto-data-quality-overview#data-reference-parameter).Example: SELECT * FROM ${data()} WHERE price &lt; 0 # Aggregate rule which evaluates the number of rows returned for the provided statement. If any rows are returned, this rule fails.
            &quot;sqlStatement&quot;: &quot;A String&quot;, # Optional. The SQL statement.
          },
          &quot;statisticRangeExpectation&quot;: { # Evaluates whether the column aggregate statistic lies between a specified range. # Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range.
            &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
            &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
            &quot;statistic&quot;: &quot;A String&quot;, # Optional. The aggregate metric to evaluate.
            &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
            &quot;strictMinEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
          },
          &quot;suspended&quot;: True or False, # Optional. Whether the Rule is active or suspended. Default is false.
          &quot;tableConditionExpectation&quot;: { # Evaluates whether the provided expression is true.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a scalar boolean result.Example: MIN(col1) &gt;= 0 # Aggregate rule which evaluates whether the provided expression is true for a table.
            &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
          },
          &quot;threshold&quot;: 3.14, # Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules.
          &quot;uniquenessExpectation&quot;: { # Evaluates whether the column has duplicates. # Row-level rule which evaluates whether each column value is unique.
          },
        },
      },
    ],
    &quot;scannedData&quot;: { # The data scanned during processing (e.g. in incremental DataScan) # Output only. The data scanned for this result.
      &quot;incrementalField&quot;: { # A data range denoted by a pair of start/end values of a field. # The range denoted by values of an incremental field
        &quot;end&quot;: &quot;A String&quot;, # Output only. Value that marks the end of the range.
        &quot;field&quot;: &quot;A String&quot;, # Output only. The field that contains values which monotonically increases over time (e.g. a timestamp column).
        &quot;start&quot;: &quot;A String&quot;, # Output only. Value that marks the start of the range.
      },
    },
    &quot;score&quot;: 3.14, # Output only. The overall data quality score.The score ranges between 0, 100 (up to two decimal points).
  },
  &quot;dataQualitySpec&quot;: { # DataQualityScan related setting. # Output only. Settings for a data quality scan.
    &quot;catalogPublishingEnabled&quot;: True or False, # Optional. If set, the latest DataScan job result will be published as Dataplex Universal Catalog metadata.
    &quot;postScanActions&quot;: { # The configuration of post scan actions of DataQualityScan. # Optional. Actions to take upon job completion.
      &quot;bigqueryExport&quot;: { # The configuration of BigQuery export post scan action. # Optional. If set, results will be exported to the provided BigQuery table.
        &quot;resultsTable&quot;: &quot;A String&quot;, # Optional. The BigQuery table to export DataQualityScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID or projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID
      },
      &quot;notificationReport&quot;: { # The configuration of notification report post scan action. # Optional. If set, results will be sent to the provided notification receipts upon triggers.
        &quot;jobEndTrigger&quot;: { # This trigger is triggered whenever a scan job run ends, regardless of the result. # Optional. If set, report will be sent when a scan job ends.
        },
        &quot;jobFailureTrigger&quot;: { # This trigger is triggered when the scan job itself fails, regardless of the result. # Optional. If set, report will be sent when a scan job fails.
        },
        &quot;recipients&quot;: { # The individuals or groups who are designated to receive notifications upon triggers. # Required. The recipients who will receive the notification report.
          &quot;emails&quot;: [ # Optional. The email recipients who will receive the DataQualityScan results report.
            &quot;A String&quot;,
          ],
        },
        &quot;scoreThresholdTrigger&quot;: { # This trigger is triggered when the DQ score in the job result is less than a specified input score. # Optional. If set, report will be sent when score threshold is met.
          &quot;scoreThreshold&quot;: 3.14, # Optional. The score range is in 0,100.
        },
      },
    },
    &quot;rowFilter&quot;: &quot;A String&quot;, # Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#where_clause).Example: col1 &gt;= 0 AND col2 &lt; 10
    &quot;rules&quot;: [ # Required. The list of rules to evaluate against a data source. At least one rule is required.
      { # A rule captures data quality intent about a data source.
        &quot;column&quot;: &quot;A String&quot;, # Optional. The unnested column which this rule is evaluated against.
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the rule. The maximum length is 1,024 characters.
        &quot;dimension&quot;: &quot;A String&quot;, # Required. The dimension a rule belongs to. Results are also aggregated at the dimension level. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
        &quot;ignoreNull&quot;: True or False, # Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for the following type of rules: RangeExpectation RegexExpectation SetExpectation UniquenessExpectation
        &quot;name&quot;: &quot;A String&quot;, # Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter.
        &quot;nonNullExpectation&quot;: { # Evaluates whether each column value is null. # Row-level rule which evaluates whether each column value is null.
        },
        &quot;rangeExpectation&quot;: { # Evaluates whether each column value lies between a specified range. # Row-level rule which evaluates whether each column value lies between a specified range.
          &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
          &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
          &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
          &quot;strictMinEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
        },
        &quot;regexExpectation&quot;: { # Evaluates whether each column value matches a specified regex. # Row-level rule which evaluates whether each column value matches a specified regex.
          &quot;regex&quot;: &quot;A String&quot;, # Optional. A regular expression the column value is expected to match.
        },
        &quot;rowConditionExpectation&quot;: { # Evaluates whether each row passes the specified condition.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a boolean value per row as the result.Example: col1 &gt;= 0 AND col2 &lt; 10 # Row-level rule which evaluates whether each row in a table passes the specified condition.
          &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
        },
        &quot;setExpectation&quot;: { # Evaluates whether each column value is contained by a specified set. # Row-level rule which evaluates whether each column value is contained by a specified set.
          &quot;values&quot;: [ # Optional. Expected values for the column value.
            &quot;A String&quot;,
          ],
        },
        &quot;sqlAssertion&quot;: { # A SQL statement that is evaluated to return rows that match an invalid state. If any rows are are returned, this rule fails.The SQL statement must use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax), and must not contain any semicolons.You can use the data reference parameter ${data()} to reference the source table with all of its precondition filters applied. Examples of precondition filters include row filters, incremental data filters, and sampling. For more information, see Data reference parameter (https://cloud.google.com/dataplex/docs/auto-data-quality-overview#data-reference-parameter).Example: SELECT * FROM ${data()} WHERE price &lt; 0 # Aggregate rule which evaluates the number of rows returned for the provided statement. If any rows are returned, this rule fails.
          &quot;sqlStatement&quot;: &quot;A String&quot;, # Optional. The SQL statement.
        },
        &quot;statisticRangeExpectation&quot;: { # Evaluates whether the column aggregate statistic lies between a specified range. # Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range.
          &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
          &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
          &quot;statistic&quot;: &quot;A String&quot;, # Optional. The aggregate metric to evaluate.
          &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
          &quot;strictMinEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
        },
        &quot;suspended&quot;: True or False, # Optional. Whether the Rule is active or suspended. Default is false.
        &quot;tableConditionExpectation&quot;: { # Evaluates whether the provided expression is true.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a scalar boolean result.Example: MIN(col1) &gt;= 0 # Aggregate rule which evaluates whether the provided expression is true for a table.
          &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
        },
        &quot;threshold&quot;: 3.14, # Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules.
        &quot;uniquenessExpectation&quot;: { # Evaluates whether the column has duplicates. # Row-level rule which evaluates whether each column value is unique.
        },
      },
    ],
    &quot;samplingPercent&quot;: 3.14, # Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100.
  },
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time when the DataScanJob ended.
  &quot;message&quot;: &quot;A String&quot;, # Output only. Additional information about the current state.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The relative resource name of the DataScanJob, of the form: projects/{project}/locations/{location_id}/dataScans/{datascan_id}/jobs/{job_id}, where project refers to a project_id or project_number and location_id refers to a Google Cloud region.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time when the DataScanJob was started.
  &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for the DataScanJob.
  &quot;type&quot;: &quot;A String&quot;, # Output only. The type of the parent DataScan.
  &quot;uid&quot;: &quot;A String&quot;, # Output only. System generated globally unique ID for the DataScanJob.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists DataScanJobs under the given DataScan.

Args:
  parent: string, Required. The resource name of the parent environment: projects/{project}/locations/{location_id}/dataScans/{data_scan_id} where project refers to a project_id or project_number and location_id refers to a Google Cloud region. (required)
  filter: string, Optional. An expression for filtering the results of the ListDataScanJobs request.If unspecified, all datascan jobs will be returned. Multiple filters can be applied (with AND, OR logical operators). Filters are case-sensitive.Allowed fields are: start_time end_timestart_time and end_time expect RFC-3339 formatted strings (e.g. 2018-10-08T18:30:00-07:00).For instance, &#x27;start_time &gt; 2018-10-08T00:00:00.123456789Z AND end_time &lt; 2018-10-09T00:00:00.123456789Z&#x27; limits results to DataScanJobs between specified start and end times.
  pageSize: integer, Optional. Maximum number of DataScanJobs to return. The service may return fewer than this value. If unspecified, at most 10 DataScanJobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.
  pageToken: string, Optional. Page token received from a previous ListDataScanJobs call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ListDataScanJobs must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # List DataScanJobs response.
  &quot;dataScanJobs&quot;: [ # DataScanJobs (BASIC view only) under a given dataScan.
    { # A DataScanJob represents an instance of DataScan execution.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the DataScanJob was created.
      &quot;dataDiscoveryResult&quot;: { # The output of a data discovery scan. # Output only. The result of a data discovery scan.
        &quot;bigqueryPublishing&quot;: { # Describes BigQuery publishing configurations. # Output only. Configuration for metadata publishing.
          &quot;dataset&quot;: &quot;A String&quot;, # Output only. The BigQuery dataset the discovered tables are published to.
          &quot;location&quot;: &quot;A String&quot;, # Output only. The location of the BigQuery publishing dataset.
        },
        &quot;scanStatistics&quot;: { # Describes result statistics of a data scan discovery job. # Output only. Describes result statistics of a data scan discovery job.
          &quot;dataProcessedBytes&quot;: &quot;A String&quot;, # The data processed in bytes.
          &quot;filesExcluded&quot;: 42, # The number of files excluded.
          &quot;filesetsCreated&quot;: 42, # The number of filesets created.
          &quot;filesetsDeleted&quot;: 42, # The number of filesets deleted.
          &quot;filesetsUpdated&quot;: 42, # The number of filesets updated.
          &quot;scannedFileCount&quot;: 42, # The number of files scanned.
          &quot;tablesCreated&quot;: 42, # The number of tables created.
          &quot;tablesDeleted&quot;: 42, # The number of tables deleted.
          &quot;tablesUpdated&quot;: 42, # The number of tables updated.
        },
      },
      &quot;dataDiscoverySpec&quot;: { # Spec for a data discovery scan. # Output only. Settings for a data discovery scan.
        &quot;bigqueryPublishingConfig&quot;: { # Describes BigQuery publishing configurations. # Optional. Configuration for metadata publishing.
          &quot;connection&quot;: &quot;A String&quot;, # Optional. The BigQuery connection used to create BigLake tables. Must be in the form projects/{project_id}/locations/{location_id}/connections/{connection_id}
          &quot;location&quot;: &quot;A String&quot;, # Optional. The location of the BigQuery dataset to publish BigLake external or non-BigLake external tables to. 1. If the Cloud Storage bucket is located in a multi-region bucket, then BigQuery dataset can be in the same multi-region bucket or any single region that is included in the same multi-region bucket. The datascan can be created in any single region that is included in the same multi-region bucket 2. If the Cloud Storage bucket is located in a dual-region bucket, then BigQuery dataset can be located in regions that are included in the dual-region bucket, or in a multi-region that includes the dual-region. The datascan can be created in any single region that is included in the same dual-region bucket. 3. If the Cloud Storage bucket is located in a single region, then BigQuery dataset can be in the same single region or any multi-region bucket that includes the same single region. The datascan will be created in the same single region as the bucket. 4. If the BigQuery dataset is in single region, it must be in the same single region as the datascan.For supported values, refer to https://cloud.google.com/bigquery/docs/locations#supported_locations.
          &quot;project&quot;: &quot;A String&quot;, # Optional. The project of the BigQuery dataset to publish BigLake external or non-BigLake external tables to. If not specified, the project of the Cloud Storage bucket will be used. The format is &quot;projects/{project_id_or_number}&quot;.
          &quot;tableType&quot;: &quot;A String&quot;, # Optional. Determines whether to publish discovered tables as BigLake external tables or non-BigLake external tables.
        },
        &quot;storageConfig&quot;: { # Configurations related to Cloud Storage as the data source. # Cloud Storage related configurations.
          &quot;csvOptions&quot;: { # Describes CSV and similar semi-structured data formats. # Optional. Configuration for CSV data.
            &quot;delimiter&quot;: &quot;A String&quot;, # Optional. The delimiter that is used to separate values. The default is , (comma).
            &quot;encoding&quot;: &quot;A String&quot;, # Optional. The character encoding of the data. The default is UTF-8.
            &quot;headerRows&quot;: 42, # Optional. The number of rows to interpret as header rows that should be skipped when reading data rows.
            &quot;quote&quot;: &quot;A String&quot;, # Optional. The character used to quote column values. Accepts &quot; (double quotation mark) or &#x27; (single quotation mark). If unspecified, defaults to &quot; (double quotation mark).
            &quot;typeInferenceDisabled&quot;: True or False, # Optional. Whether to disable the inference of data types for CSV data. If true, all columns are registered as strings.
          },
          &quot;excludePatterns&quot;: [ # Optional. Defines the data to exclude during discovery. Provide a list of patterns that identify the data to exclude. For Cloud Storage bucket assets, these patterns are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these patterns are interpreted as patterns to match table names.
            &quot;A String&quot;,
          ],
          &quot;includePatterns&quot;: [ # Optional. Defines the data to include during discovery when only a subset of the data should be considered. Provide a list of patterns that identify the data to include. For Cloud Storage bucket assets, these patterns are interpreted as glob patterns used to match object names. For BigQuery dataset assets, these patterns are interpreted as patterns to match table names.
            &quot;A String&quot;,
          ],
          &quot;jsonOptions&quot;: { # Describes JSON data format. # Optional. Configuration for JSON data.
            &quot;encoding&quot;: &quot;A String&quot;, # Optional. The character encoding of the data. The default is UTF-8.
            &quot;typeInferenceDisabled&quot;: True or False, # Optional. Whether to disable the inference of data types for JSON data. If true, all columns are registered as their primitive types (strings, number, or boolean).
          },
        },
      },
      &quot;dataDocumentationResult&quot;: { # The output of a DataDocumentation scan. # Output only. The result of a data documentation scan.
        &quot;tableResult&quot;: { # Generated metadata about the table. # Output only. Table result for insights.
          &quot;name&quot;: &quot;A String&quot;, # Output only. The service-qualified full resource name of the cloud resource. Ex: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID
          &quot;overview&quot;: &quot;A String&quot;, # Output only. Generated description of the table.
          &quot;queries&quot;: [ # Output only. Sample SQL queries for the table.
            { # A sample SQL query in data documentation.
              &quot;description&quot;: &quot;A String&quot;, # Output only. The description for the query.
              &quot;sql&quot;: &quot;A String&quot;, # Output only. The SQL query string which can be executed.
            },
          ],
          &quot;schema&quot;: { # Schema of the table with generated metadata of columns. # Output only. Schema of the table with generated metadata of the columns in the schema.
            &quot;fields&quot;: [ # Output only. The list of columns.
              { # Column of a table with generated metadata and nested fields.
                &quot;description&quot;: &quot;A String&quot;, # Output only. Generated description for columns and fields.
                &quot;fields&quot;: [ # Output only. Nested fields.
                  # Object with schema name: GoogleCloudDataplexV1DataDocumentationResultField
                ],
                &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the column.
              },
            ],
          },
        },
      },
      &quot;dataDocumentationSpec&quot;: { # DataDocumentation scan related spec. # Output only. Settings for a data documentation scan.
      },
      &quot;dataProfileResult&quot;: { # DataProfileResult defines the output of DataProfileScan. Each field of the table will have field type specific profile result. # Output only. The result of a data profile scan.
        &quot;postScanActionsResult&quot;: { # The result of post scan actions of DataProfileScan job. # Output only. The result of post scan actions.
          &quot;bigqueryExportResult&quot;: { # The result of BigQuery export post scan action. # Output only. The result of BigQuery export post scan action.
            &quot;message&quot;: &quot;A String&quot;, # Output only. Additional information about the BigQuery exporting.
            &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for the BigQuery exporting.
          },
        },
        &quot;profile&quot;: { # Contains name, type, mode and field type specific profile information. # Output only. The profile information per field.
          &quot;fields&quot;: [ # Output only. List of fields with structural and profile information for each field.
            { # A field within a table.
              &quot;mode&quot;: &quot;A String&quot;, # Output only. The mode of the field. Possible values include: REQUIRED, if it is a required field. NULLABLE, if it is an optional field. REPEATED, if it is a repeated field.
              &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the field.
              &quot;profile&quot;: { # The profile information for each field type. # Output only. Profile information for the corresponding field.
                &quot;distinctRatio&quot;: 3.14, # Output only. Ratio of rows with distinct values against total scanned rows. Not available for complex non-groupable field type, including RECORD, ARRAY, GEOGRAPHY, and JSON, as well as fields with REPEATABLE mode.
                &quot;doubleProfile&quot;: { # The profile information for a double type field. # Double type field information.
                  &quot;average&quot;: 3.14, # Output only. Average of non-null values in the scanned data. NaN, if the field has a NaN.
                  &quot;max&quot;: 3.14, # Output only. Maximum of non-null values in the scanned data. NaN, if the field has a NaN.
                  &quot;min&quot;: 3.14, # Output only. Minimum of non-null values in the scanned data. NaN, if the field has a NaN.
                  &quot;quartiles&quot;: [ # Output only. A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of quartile values for the scanned data, occurring in order Q1, median, Q3.
                    3.14,
                  ],
                  &quot;standardDeviation&quot;: 3.14, # Output only. Standard deviation of non-null values in the scanned data. NaN, if the field has a NaN.
                },
                &quot;integerProfile&quot;: { # The profile information for an integer type field. # Integer type field information.
                  &quot;average&quot;: 3.14, # Output only. Average of non-null values in the scanned data. NaN, if the field has a NaN.
                  &quot;max&quot;: &quot;A String&quot;, # Output only. Maximum of non-null values in the scanned data. NaN, if the field has a NaN.
                  &quot;min&quot;: &quot;A String&quot;, # Output only. Minimum of non-null values in the scanned data. NaN, if the field has a NaN.
                  &quot;quartiles&quot;: [ # Output only. A quartile divides the number of data points into four parts, or quarters, of more-or-less equal size. Three main quartiles used are: The first quartile (Q1) splits off the lowest 25% of data from the highest 75%. It is also known as the lower or 25th empirical quartile, as 25% of the data is below this point. The second quartile (Q2) is the median of a data set. So, 50% of the data lies below this point. The third quartile (Q3) splits off the highest 25% of data from the lowest 75%. It is known as the upper or 75th empirical quartile, as 75% of the data lies below this point. Here, the quartiles is provided as an ordered list of approximate quartile values for the scanned data, occurring in order Q1, median, Q3.
                    &quot;A String&quot;,
                  ],
                  &quot;standardDeviation&quot;: 3.14, # Output only. Standard deviation of non-null values in the scanned data. NaN, if the field has a NaN.
                },
                &quot;nullRatio&quot;: 3.14, # Output only. Ratio of rows with null value against total scanned rows.
                &quot;stringProfile&quot;: { # The profile information for a string type field. # String type field information.
                  &quot;averageLength&quot;: 3.14, # Output only. Average length of non-null values in the scanned data.
                  &quot;maxLength&quot;: &quot;A String&quot;, # Output only. Maximum length of non-null values in the scanned data.
                  &quot;minLength&quot;: &quot;A String&quot;, # Output only. Minimum length of non-null values in the scanned data.
                },
                &quot;topNValues&quot;: [ # Output only. The list of top N non-null values, frequency and ratio with which they occur in the scanned data. N is 10 or equal to the number of distinct values in the field, whichever is smaller. Not available for complex non-groupable field type, including RECORD, ARRAY, GEOGRAPHY, and JSON, as well as fields with REPEATABLE mode.
                  { # Top N non-null values in the scanned data.
                    &quot;count&quot;: &quot;A String&quot;, # Output only. Count of the corresponding value in the scanned data.
                    &quot;ratio&quot;: 3.14, # Output only. Ratio of the corresponding value in the field against the total number of rows in the scanned data.
                    &quot;value&quot;: &quot;A String&quot;, # Output only. String value of a top N non-null value.
                  },
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # Output only. The data type retrieved from the schema of the data source. For instance, for a BigQuery native table, it is the BigQuery Table Schema (https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#tablefieldschema). For a Dataplex Universal Catalog Entity, it is the Entity Schema (https://cloud.google.com/dataplex/docs/reference/rpc/google.cloud.dataplex.v1#type_3).
            },
          ],
        },
        &quot;rowCount&quot;: &quot;A String&quot;, # Output only. The count of rows scanned.
        &quot;scannedData&quot;: { # The data scanned during processing (e.g. in incremental DataScan) # Output only. The data scanned for this result.
          &quot;incrementalField&quot;: { # A data range denoted by a pair of start/end values of a field. # The range denoted by values of an incremental field
            &quot;end&quot;: &quot;A String&quot;, # Output only. Value that marks the end of the range.
            &quot;field&quot;: &quot;A String&quot;, # Output only. The field that contains values which monotonically increases over time (e.g. a timestamp column).
            &quot;start&quot;: &quot;A String&quot;, # Output only. Value that marks the start of the range.
          },
        },
      },
      &quot;dataProfileSpec&quot;: { # DataProfileScan related setting. # Output only. Settings for a data profile scan.
        &quot;excludeFields&quot;: { # The specification for fields to include or exclude in data profile scan. # Optional. The fields to exclude from data profile.If specified, the fields will be excluded from data profile, regardless of include_fields value.
          &quot;fieldNames&quot;: [ # Optional. Expected input is a list of fully qualified names of fields as in the schema.Only top-level field names for nested fields are supported. For instance, if &#x27;x&#x27; is of nested field type, listing &#x27;x&#x27; is supported but &#x27;x.y.z&#x27; is not supported. Here &#x27;y&#x27; and &#x27;y.z&#x27; are nested fields of &#x27;x&#x27;.
            &quot;A String&quot;,
          ],
        },
        &quot;includeFields&quot;: { # The specification for fields to include or exclude in data profile scan. # Optional. The fields to include in data profile.If not specified, all fields at the time of profile scan job execution are included, except for ones listed in exclude_fields.
          &quot;fieldNames&quot;: [ # Optional. Expected input is a list of fully qualified names of fields as in the schema.Only top-level field names for nested fields are supported. For instance, if &#x27;x&#x27; is of nested field type, listing &#x27;x&#x27; is supported but &#x27;x.y.z&#x27; is not supported. Here &#x27;y&#x27; and &#x27;y.z&#x27; are nested fields of &#x27;x&#x27;.
            &quot;A String&quot;,
          ],
        },
        &quot;postScanActions&quot;: { # The configuration of post scan actions of DataProfileScan job. # Optional. Actions to take upon job completion..
          &quot;bigqueryExport&quot;: { # The configuration of BigQuery export post scan action. # Optional. If set, results will be exported to the provided BigQuery table.
            &quot;resultsTable&quot;: &quot;A String&quot;, # Optional. The BigQuery table to export DataProfileScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID
          },
        },
        &quot;rowFilter&quot;: &quot;A String&quot;, # Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in BigQuery standard SQL syntax. Example: col1 &gt;= 0 AND col2 &lt; 10
        &quot;samplingPercent&quot;: 3.14, # Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100.
      },
      &quot;dataQualityResult&quot;: { # The output of a DataQualityScan. # Output only. The result of a data quality scan.
        &quot;anomalyDetectionGeneratedAssets&quot;: { # The assets generated by Anomaly Detection Data Scan. # Output only. The generated assets for anomaly detection.
          &quot;dataIntermediateTable&quot;: &quot;A String&quot;, # Output only. The intermediate table for data anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID
          &quot;freshnessIntermediateTable&quot;: &quot;A String&quot;, # Output only. The intermediate table for freshness anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID
          &quot;resultTable&quot;: &quot;A String&quot;, # Output only. The result table for anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID If the result table is set at AnomalyDetectionAssets, the result table here would be the same as the one set in the AnomalyDetectionAssets.result_table.
          &quot;volumeIntermediateTable&quot;: &quot;A String&quot;, # Output only. The intermediate table for volume anomaly detection. Format: PROJECT_ID.DATASET_ID.TABLE_ID
        },
        &quot;catalogPublishingStatus&quot;: { # The status of publishing the data scan result as Dataplex Universal Catalog metadata. # Output only. The status of publishing the data scan as Dataplex Universal Catalog metadata.
          &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for catalog publishing.
        },
        &quot;columns&quot;: [ # Output only. A list of results at the column level.A column will have a corresponding DataQualityColumnResult if and only if there is at least one rule with the &#x27;column&#x27; field set to it.
          { # DataQualityColumnResult provides a more detailed, per-column view of the results.
            &quot;column&quot;: &quot;A String&quot;, # Output only. The column specified in the DataQualityRule.
            &quot;dimensions&quot;: [ # Output only. The dimension-level results for this column.
              { # DataQualityDimensionResult provides a more detailed, per-dimension view of the results.
                &quot;dimension&quot;: { # A dimension captures data quality intent about a defined subset of the rules specified. # Output only. The dimension config specified in the DataQualitySpec, as is.
                  &quot;name&quot;: &quot;A String&quot;, # Output only. The dimension name a rule belongs to. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
                },
                &quot;passed&quot;: True or False, # Output only. Whether the dimension passed or failed.
                &quot;score&quot;: 3.14, # Output only. The dimension-level data quality score for this data scan job if and only if the &#x27;dimension&#x27; field is set.The score ranges between 0, 100 (up to two decimal points).
              },
            ],
            &quot;passed&quot;: True or False, # Output only. Whether the column passed or failed.
            &quot;score&quot;: 3.14, # Output only. The column-level data quality score for this data scan job if and only if the &#x27;column&#x27; field is set.The score ranges between between 0, 100 (up to two decimal points).
          },
        ],
        &quot;dimensions&quot;: [ # Output only. A list of results at the dimension level.A dimension will have a corresponding DataQualityDimensionResult if and only if there is at least one rule with the &#x27;dimension&#x27; field set to it.
          { # DataQualityDimensionResult provides a more detailed, per-dimension view of the results.
            &quot;dimension&quot;: { # A dimension captures data quality intent about a defined subset of the rules specified. # Output only. The dimension config specified in the DataQualitySpec, as is.
              &quot;name&quot;: &quot;A String&quot;, # Output only. The dimension name a rule belongs to. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
            },
            &quot;passed&quot;: True or False, # Output only. Whether the dimension passed or failed.
            &quot;score&quot;: 3.14, # Output only. The dimension-level data quality score for this data scan job if and only if the &#x27;dimension&#x27; field is set.The score ranges between 0, 100 (up to two decimal points).
          },
        ],
        &quot;passed&quot;: True or False, # Output only. Overall data quality result -- true if all rules passed.
        &quot;postScanActionsResult&quot;: { # The result of post scan actions of DataQualityScan job. # Output only. The result of post scan actions.
          &quot;bigqueryExportResult&quot;: { # The result of BigQuery export post scan action. # Output only. The result of BigQuery export post scan action.
            &quot;message&quot;: &quot;A String&quot;, # Output only. Additional information about the BigQuery exporting.
            &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for the BigQuery exporting.
          },
        },
        &quot;rowCount&quot;: &quot;A String&quot;, # Output only. The count of rows processed.
        &quot;rules&quot;: [ # Output only. A list of all the rules in a job, and their results.
          { # DataQualityRuleResult provides a more detailed, per-rule view of the results.
            &quot;assertionRowCount&quot;: &quot;A String&quot;, # Output only. The number of rows returned by the SQL statement in a SQL assertion rule.This field is only valid for SQL assertion rules.
            &quot;evaluatedCount&quot;: &quot;A String&quot;, # Output only. The number of rows a rule was evaluated against.This field is only valid for row-level type rules.Evaluated count can be configured to either include all rows (default) - with null rows automatically failing rule evaluation, or exclude null rows from the evaluated_count, by setting ignore_nulls = true.This field is not set for rule SqlAssertion.
            &quot;failingRowsQuery&quot;: &quot;A String&quot;, # Output only. The query to find rows that did not pass this rule.This field is only valid for row-level type rules.
            &quot;nullCount&quot;: &quot;A String&quot;, # Output only. The number of rows with null values in the specified column.
            &quot;passRatio&quot;: 3.14, # Output only. The ratio of passed_count / evaluated_count.This field is only valid for row-level type rules.
            &quot;passed&quot;: True or False, # Output only. Whether the rule passed or failed.
            &quot;passedCount&quot;: &quot;A String&quot;, # Output only. The number of rows which passed a rule evaluation.This field is only valid for row-level type rules.This field is not set for rule SqlAssertion.
            &quot;rule&quot;: { # A rule captures data quality intent about a data source. # Output only. The rule specified in the DataQualitySpec, as is.
              &quot;column&quot;: &quot;A String&quot;, # Optional. The unnested column which this rule is evaluated against.
              &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the rule. The maximum length is 1,024 characters.
              &quot;dimension&quot;: &quot;A String&quot;, # Required. The dimension a rule belongs to. Results are also aggregated at the dimension level. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
              &quot;ignoreNull&quot;: True or False, # Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for the following type of rules: RangeExpectation RegexExpectation SetExpectation UniquenessExpectation
              &quot;name&quot;: &quot;A String&quot;, # Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter.
              &quot;nonNullExpectation&quot;: { # Evaluates whether each column value is null. # Row-level rule which evaluates whether each column value is null.
              },
              &quot;rangeExpectation&quot;: { # Evaluates whether each column value lies between a specified range. # Row-level rule which evaluates whether each column value lies between a specified range.
                &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
                &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
                &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
                &quot;strictMinEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
              },
              &quot;regexExpectation&quot;: { # Evaluates whether each column value matches a specified regex. # Row-level rule which evaluates whether each column value matches a specified regex.
                &quot;regex&quot;: &quot;A String&quot;, # Optional. A regular expression the column value is expected to match.
              },
              &quot;rowConditionExpectation&quot;: { # Evaluates whether each row passes the specified condition.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a boolean value per row as the result.Example: col1 &gt;= 0 AND col2 &lt; 10 # Row-level rule which evaluates whether each row in a table passes the specified condition.
                &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
              },
              &quot;setExpectation&quot;: { # Evaluates whether each column value is contained by a specified set. # Row-level rule which evaluates whether each column value is contained by a specified set.
                &quot;values&quot;: [ # Optional. Expected values for the column value.
                  &quot;A String&quot;,
                ],
              },
              &quot;sqlAssertion&quot;: { # A SQL statement that is evaluated to return rows that match an invalid state. If any rows are are returned, this rule fails.The SQL statement must use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax), and must not contain any semicolons.You can use the data reference parameter ${data()} to reference the source table with all of its precondition filters applied. Examples of precondition filters include row filters, incremental data filters, and sampling. For more information, see Data reference parameter (https://cloud.google.com/dataplex/docs/auto-data-quality-overview#data-reference-parameter).Example: SELECT * FROM ${data()} WHERE price &lt; 0 # Aggregate rule which evaluates the number of rows returned for the provided statement. If any rows are returned, this rule fails.
                &quot;sqlStatement&quot;: &quot;A String&quot;, # Optional. The SQL statement.
              },
              &quot;statisticRangeExpectation&quot;: { # Evaluates whether the column aggregate statistic lies between a specified range. # Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range.
                &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
                &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
                &quot;statistic&quot;: &quot;A String&quot;, # Optional. The aggregate metric to evaluate.
                &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
                &quot;strictMinEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
              },
              &quot;suspended&quot;: True or False, # Optional. Whether the Rule is active or suspended. Default is false.
              &quot;tableConditionExpectation&quot;: { # Evaluates whether the provided expression is true.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a scalar boolean result.Example: MIN(col1) &gt;= 0 # Aggregate rule which evaluates whether the provided expression is true for a table.
                &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
              },
              &quot;threshold&quot;: 3.14, # Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules.
              &quot;uniquenessExpectation&quot;: { # Evaluates whether the column has duplicates. # Row-level rule which evaluates whether each column value is unique.
              },
            },
          },
        ],
        &quot;scannedData&quot;: { # The data scanned during processing (e.g. in incremental DataScan) # Output only. The data scanned for this result.
          &quot;incrementalField&quot;: { # A data range denoted by a pair of start/end values of a field. # The range denoted by values of an incremental field
            &quot;end&quot;: &quot;A String&quot;, # Output only. Value that marks the end of the range.
            &quot;field&quot;: &quot;A String&quot;, # Output only. The field that contains values which monotonically increases over time (e.g. a timestamp column).
            &quot;start&quot;: &quot;A String&quot;, # Output only. Value that marks the start of the range.
          },
        },
        &quot;score&quot;: 3.14, # Output only. The overall data quality score.The score ranges between 0, 100 (up to two decimal points).
      },
      &quot;dataQualitySpec&quot;: { # DataQualityScan related setting. # Output only. Settings for a data quality scan.
        &quot;catalogPublishingEnabled&quot;: True or False, # Optional. If set, the latest DataScan job result will be published as Dataplex Universal Catalog metadata.
        &quot;postScanActions&quot;: { # The configuration of post scan actions of DataQualityScan. # Optional. Actions to take upon job completion.
          &quot;bigqueryExport&quot;: { # The configuration of BigQuery export post scan action. # Optional. If set, results will be exported to the provided BigQuery table.
            &quot;resultsTable&quot;: &quot;A String&quot;, # Optional. The BigQuery table to export DataQualityScan results to. Format: //bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID or projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID
          },
          &quot;notificationReport&quot;: { # The configuration of notification report post scan action. # Optional. If set, results will be sent to the provided notification receipts upon triggers.
            &quot;jobEndTrigger&quot;: { # This trigger is triggered whenever a scan job run ends, regardless of the result. # Optional. If set, report will be sent when a scan job ends.
            },
            &quot;jobFailureTrigger&quot;: { # This trigger is triggered when the scan job itself fails, regardless of the result. # Optional. If set, report will be sent when a scan job fails.
            },
            &quot;recipients&quot;: { # The individuals or groups who are designated to receive notifications upon triggers. # Required. The recipients who will receive the notification report.
              &quot;emails&quot;: [ # Optional. The email recipients who will receive the DataQualityScan results report.
                &quot;A String&quot;,
              ],
            },
            &quot;scoreThresholdTrigger&quot;: { # This trigger is triggered when the DQ score in the job result is less than a specified input score. # Optional. If set, report will be sent when score threshold is met.
              &quot;scoreThreshold&quot;: 3.14, # Optional. The score range is in 0,100.
            },
          },
        },
        &quot;rowFilter&quot;: &quot;A String&quot;, # Optional. A filter applied to all rows in a single DataScan job. The filter needs to be a valid SQL expression for a WHERE clause in GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#where_clause).Example: col1 &gt;= 0 AND col2 &lt; 10
        &quot;rules&quot;: [ # Required. The list of rules to evaluate against a data source. At least one rule is required.
          { # A rule captures data quality intent about a data source.
            &quot;column&quot;: &quot;A String&quot;, # Optional. The unnested column which this rule is evaluated against.
            &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the rule. The maximum length is 1,024 characters.
            &quot;dimension&quot;: &quot;A String&quot;, # Required. The dimension a rule belongs to. Results are also aggregated at the dimension level. Custom dimension name is supported with all uppercase letters and maximum length of 30 characters.
            &quot;ignoreNull&quot;: True or False, # Optional. Rows with null values will automatically fail a rule, unless ignore_null is true. In that case, such null rows are trivially considered passing.This field is only valid for the following type of rules: RangeExpectation RegexExpectation SetExpectation UniquenessExpectation
            &quot;name&quot;: &quot;A String&quot;, # Optional. A mutable name for the rule. The name must contain only letters (a-z, A-Z), numbers (0-9), or hyphens (-). The maximum length is 63 characters. Must start with a letter. Must end with a number or a letter.
            &quot;nonNullExpectation&quot;: { # Evaluates whether each column value is null. # Row-level rule which evaluates whether each column value is null.
            },
            &quot;rangeExpectation&quot;: { # Evaluates whether each column value lies between a specified range. # Row-level rule which evaluates whether each column value lies between a specified range.
              &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
              &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column value allowed for a row to pass this validation. At least one of min_value and max_value need to be provided.
              &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
              &quot;strictMinEnabled&quot;: True or False, # Optional. Whether each value needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
            },
            &quot;regexExpectation&quot;: { # Evaluates whether each column value matches a specified regex. # Row-level rule which evaluates whether each column value matches a specified regex.
              &quot;regex&quot;: &quot;A String&quot;, # Optional. A regular expression the column value is expected to match.
            },
            &quot;rowConditionExpectation&quot;: { # Evaluates whether each row passes the specified condition.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a boolean value per row as the result.Example: col1 &gt;= 0 AND col2 &lt; 10 # Row-level rule which evaluates whether each row in a table passes the specified condition.
              &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
            },
            &quot;setExpectation&quot;: { # Evaluates whether each column value is contained by a specified set. # Row-level rule which evaluates whether each column value is contained by a specified set.
              &quot;values&quot;: [ # Optional. Expected values for the column value.
                &quot;A String&quot;,
              ],
            },
            &quot;sqlAssertion&quot;: { # A SQL statement that is evaluated to return rows that match an invalid state. If any rows are are returned, this rule fails.The SQL statement must use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax), and must not contain any semicolons.You can use the data reference parameter ${data()} to reference the source table with all of its precondition filters applied. Examples of precondition filters include row filters, incremental data filters, and sampling. For more information, see Data reference parameter (https://cloud.google.com/dataplex/docs/auto-data-quality-overview#data-reference-parameter).Example: SELECT * FROM ${data()} WHERE price &lt; 0 # Aggregate rule which evaluates the number of rows returned for the provided statement. If any rows are returned, this rule fails.
              &quot;sqlStatement&quot;: &quot;A String&quot;, # Optional. The SQL statement.
            },
            &quot;statisticRangeExpectation&quot;: { # Evaluates whether the column aggregate statistic lies between a specified range. # Aggregate rule which evaluates whether the column aggregate statistic lies between a specified range.
              &quot;maxValue&quot;: &quot;A String&quot;, # Optional. The maximum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
              &quot;minValue&quot;: &quot;A String&quot;, # Optional. The minimum column statistic value allowed for a row to pass this validation.At least one of min_value and max_value need to be provided.
              &quot;statistic&quot;: &quot;A String&quot;, # Optional. The aggregate metric to evaluate.
              &quot;strictMaxEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly lesser than (&#x27;&lt;&#x27;) the maximum, or if equality is allowed.Only relevant if a max_value has been defined. Default = false.
              &quot;strictMinEnabled&quot;: True or False, # Optional. Whether column statistic needs to be strictly greater than (&#x27;&gt;&#x27;) the minimum, or if equality is allowed.Only relevant if a min_value has been defined. Default = false.
            },
            &quot;suspended&quot;: True or False, # Optional. Whether the Rule is active or suspended. Default is false.
            &quot;tableConditionExpectation&quot;: { # Evaluates whether the provided expression is true.The SQL expression needs to use GoogleSQL syntax (https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax) and should produce a scalar boolean result.Example: MIN(col1) &gt;= 0 # Aggregate rule which evaluates whether the provided expression is true for a table.
              &quot;sqlExpression&quot;: &quot;A String&quot;, # Optional. The SQL expression.
            },
            &quot;threshold&quot;: 3.14, # Optional. The minimum ratio of passing_rows / total_rows required to pass this rule, with a range of 0.0, 1.0.0 indicates default value (i.e. 1.0).This field is only valid for row-level type rules.
            &quot;uniquenessExpectation&quot;: { # Evaluates whether the column has duplicates. # Row-level rule which evaluates whether each column value is unique.
            },
          },
        ],
        &quot;samplingPercent&quot;: 3.14, # Optional. The percentage of the records to be selected from the dataset for DataScan. Value can range between 0.0 and 100.0 with up to 3 significant decimal digits. Sampling is not applied if sampling_percent is not specified, 0 or 100.
      },
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. The time when the DataScanJob ended.
      &quot;message&quot;: &quot;A String&quot;, # Output only. Additional information about the current state.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Identifier. The relative resource name of the DataScanJob, of the form: projects/{project}/locations/{location_id}/dataScans/{datascan_id}/jobs/{job_id}, where project refers to a project_id or project_number and location_id refers to a Google Cloud region.
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. The time when the DataScanJob was started.
      &quot;state&quot;: &quot;A String&quot;, # Output only. Execution state for the DataScanJob.
      &quot;type&quot;: &quot;A String&quot;, # Output only. The type of the parent DataScan.
      &quot;uid&quot;: &quot;A String&quot;, # Output only. System generated globally unique ID for the DataScanJob.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

</body></html>