// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.dataplex.v1; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; option go_package = "cloud.google.com/go/dataplex/apiv1/dataplexpb;dataplexpb"; option java_multiple_files = true; option java_outer_classname = "LogsProto"; option java_package = "com.google.cloud.dataplex.v1"; // The payload associated with Discovery data processing. message DiscoveryEvent { // The type of the event. enum EventType { // An unspecified event type. EVENT_TYPE_UNSPECIFIED = 0; // An event representing discovery configuration in effect. CONFIG = 1; // An event representing a metadata entity being created. ENTITY_CREATED = 2; // An event representing a metadata entity being updated. ENTITY_UPDATED = 3; // An event representing a metadata entity being deleted. ENTITY_DELETED = 4; // An event representing a partition being created. PARTITION_CREATED = 5; // An event representing a partition being updated. PARTITION_UPDATED = 6; // An event representing a partition being deleted. PARTITION_DELETED = 7; } // The type of the entity. enum EntityType { // An unspecified event type. ENTITY_TYPE_UNSPECIFIED = 0; // Entities representing structured data. TABLE = 1; // Entities representing unstructured data. FILESET = 2; } // Details about configuration events. message ConfigDetails { // A list of discovery configuration parameters in effect. // The keys are the field paths within DiscoverySpec. // Eg. includePatterns, excludePatterns, csvOptions.disableTypeInference, // etc. map parameters = 1; } // Details about the entity. message EntityDetails { // The name of the entity resource. // The name is the fully-qualified resource name. string entity = 1; // The type of the entity resource. EntityType type = 2; } // Details about the partition. message PartitionDetails { // The name to the partition resource. // The name is the fully-qualified resource name. string partition = 1; // The name to the containing entity resource. // The name is the fully-qualified resource name. string entity = 2; // The type of the containing entity resource. EntityType type = 3; // The locations of the data items (e.g., a Cloud Storage objects) sampled // for metadata inference. repeated string sampled_data_locations = 4; } // Details about the action. message ActionDetails { // The type of action. // Eg. IncompatibleDataSchema, InvalidDataFormat string type = 1; } // The log message. string message = 1; // The id of the associated lake. string lake_id = 2; // The id of the associated zone. string zone_id = 3; // The id of the associated asset. string asset_id = 4; // The data location associated with the event. string data_location = 5; // The type of the event being logged. EventType type = 10; // Additional details about the event. oneof details { // Details about discovery configuration in effect. ConfigDetails config = 20; // Details about the entity associated with the event. EntityDetails entity = 21; // Details about the partition associated with the event. PartitionDetails partition = 22; // Details about the action associated with the event. ActionDetails action = 23; } } // The payload associated with Job logs that contains events describing jobs // that have run within a Lake. message JobEvent { // The type of the job. enum Type { // Unspecified job type. TYPE_UNSPECIFIED = 0; // Spark jobs. SPARK = 1; // Notebook jobs. NOTEBOOK = 2; } // The completion status of the job. enum State { // Unspecified job state. STATE_UNSPECIFIED = 0; // Job successfully completed. SUCCEEDED = 1; // Job was unsuccessful. FAILED = 2; // Job was cancelled by the user. CANCELLED = 3; // Job was cancelled or aborted via the service executing the job. ABORTED = 4; } // The service used to execute the job. enum Service { // Unspecified service. SERVICE_UNSPECIFIED = 0; // Cloud Dataproc. DATAPROC = 1; } // Job Execution trigger. enum ExecutionTrigger { // The job execution trigger is unspecified. EXECUTION_TRIGGER_UNSPECIFIED = 0; // The job was triggered by Dataplex based on trigger spec from task // definition. TASK_CONFIG = 1; // The job was triggered by the explicit call of Task API. RUN_REQUEST = 2; } // The log message. string message = 1; // The unique id identifying the job. string job_id = 2; // The time when the job started running. google.protobuf.Timestamp start_time = 3; // The time when the job ended running. google.protobuf.Timestamp end_time = 4; // The job state on completion. State state = 5; // The number of retries. int32 retries = 6; // The type of the job. Type type = 7; // The service used to execute the job. Service service = 8; // The reference to the job within the service. string service_job = 9; // Job execution trigger. ExecutionTrigger execution_trigger = 11; } // These messages contain information about sessions within an environment. // The monitored resource is 'Environment'. message SessionEvent { // The type of the event. enum EventType { // An unspecified event type. EVENT_TYPE_UNSPECIFIED = 0; // Event when the session is assigned to a user. START = 1; // Event for stop of a session. STOP = 2; // Query events in the session. QUERY = 3; // Event for creation of a cluster. It is not yet assigned to a user. // This comes before START in the sequence CREATE = 4; } // Execution details of the query. message QueryDetail { // Query Execution engine. enum Engine { // An unspecified Engine type. ENGINE_UNSPECIFIED = 0; // Spark-sql engine is specified in Query. SPARK_SQL = 1; // BigQuery engine is specified in Query. BIGQUERY = 2; } // The unique Query id identifying the query. string query_id = 1; // The query text executed. string query_text = 2; // Query Execution engine. Engine engine = 3; // Time taken for execution of the query. google.protobuf.Duration duration = 4; // The size of results the query produced. int64 result_size_bytes = 5; // The data processed by the query. int64 data_processed_bytes = 6; } // The log message. string message = 1; // The information about the user that created the session. It will be the // email address of the user. string user_id = 2; // Unique identifier for the session. string session_id = 3; // The type of the event. EventType type = 4; // Additional information about the Query metadata. oneof detail { // The execution details of the query. QueryDetail query = 5; } // The status of the event. bool event_succeeded = 6; // If the session is associated with an environment with fast startup enabled, // and was created before being assigned to a user. bool fast_startup_enabled = 7; // The idle duration of a warm pooled session before it is assigned to user. google.protobuf.Duration unassigned_duration = 8; } // Payload associated with Governance related log events. message GovernanceEvent { // Information about Entity resource that the log event is associated with. message Entity { // Type of entity. enum EntityType { // An unspecified Entity type. ENTITY_TYPE_UNSPECIFIED = 0; // Table entity type. TABLE = 1; // Fileset entity type. FILESET = 2; } // The Entity resource the log event is associated with. // Format: // `projects/{project_number}/locations/{location_id}/lakes/{lake_id}/zones/{zone_id}/entities/{entity_id}` string entity = 1 [(google.api.resource_reference) = { type: "dataplex.googleapis.com/Entity" }]; // Type of entity. EntityType entity_type = 2; } // Type of governance log event. enum EventType { // An unspecified event type. EVENT_TYPE_UNSPECIFIED = 0; // Resource IAM policy update event. RESOURCE_IAM_POLICY_UPDATE = 1; // BigQuery table create event. BIGQUERY_TABLE_CREATE = 2; // BigQuery table update event. BIGQUERY_TABLE_UPDATE = 3; // BigQuery table delete event. BIGQUERY_TABLE_DELETE = 4; // BigQuery connection create event. BIGQUERY_CONNECTION_CREATE = 5; // BigQuery connection update event. BIGQUERY_CONNECTION_UPDATE = 6; // BigQuery connection delete event. BIGQUERY_CONNECTION_DELETE = 7; // BigQuery taxonomy created. BIGQUERY_TAXONOMY_CREATE = 10; // BigQuery policy tag created. BIGQUERY_POLICY_TAG_CREATE = 11; // BigQuery policy tag deleted. BIGQUERY_POLICY_TAG_DELETE = 12; // BigQuery set iam policy for policy tag. BIGQUERY_POLICY_TAG_SET_IAM_POLICY = 13; // Access policy update event. ACCESS_POLICY_UPDATE = 14; // Number of resources matched with particular Query. GOVERNANCE_RULE_MATCHED_RESOURCES = 15; // Rule processing exceeds the allowed limit. GOVERNANCE_RULE_SEARCH_LIMIT_EXCEEDS = 16; // Rule processing errors. GOVERNANCE_RULE_ERRORS = 17; // Governance rule processing Event. GOVERNANCE_RULE_PROCESSING = 18; } // The log message. string message = 1; // The type of the event. EventType event_type = 2; // Entity resource information if the log event is associated with a // specific entity. optional Entity entity = 3; } // These messages contain information about the execution of a datascan. // The monitored resource is 'DataScan' // Next ID: 13 message DataScanEvent { // The type of the data scan. enum ScanType { // An unspecified data scan type. SCAN_TYPE_UNSPECIFIED = 0; // Data scan for data profile. DATA_PROFILE = 1; // Data scan for data quality. DATA_QUALITY = 2; } // The job state of the data scan. enum State { // Unspecified job state. STATE_UNSPECIFIED = 0; // Data scan job started. STARTED = 1; // Data scan job successfully completed. SUCCEEDED = 2; // Data scan job was unsuccessful. FAILED = 3; // Data scan job was cancelled. CANCELLED = 4; // Data scan job was createed. CREATED = 5; } // The trigger type for the data scan. enum Trigger { // An unspecified trigger type. TRIGGER_UNSPECIFIED = 0; // Data scan triggers on demand. ON_DEMAND = 1; // Data scan triggers as per schedule. SCHEDULE = 2; } // The scope of job for the data scan. enum Scope { // An unspecified scope type. SCOPE_UNSPECIFIED = 0; // Data scan runs on all of the data. FULL = 1; // Data scan runs on incremental data. INCREMENTAL = 2; } // Data profile result for data scan job. message DataProfileResult { // The count of rows processed in the data scan job. int64 row_count = 1; } // Data quality result for data scan job. message DataQualityResult { // The count of rows processed in the data scan job. int64 row_count = 1; // Whether the data quality result was `pass` or not. bool passed = 2; // The result of each dimension for data quality result. // The key of the map is the name of the dimension. // The value is the bool value depicting whether the dimension result was // `pass` or not. map dimension_passed = 3; // The table-level data quality score for the data scan job. // // The data quality score ranges between [0, 100] (up to two decimal // points). float score = 4; // The score of each dimension for data quality result. // The key of the map is the name of the dimension. // The value is the data quality score for the dimension. // // The score ranges between [0, 100] (up to two decimal // points). map dimension_score = 5; // The score of each column scanned in the data scan job. // The key of the map is the name of the column. // The value is the data quality score for the column. // // The score ranges between [0, 100] (up to two decimal // points). map column_score = 6; } // Applied configs for data profile type data scan job. message DataProfileAppliedConfigs { // The percentage of the records selected from the dataset for DataScan. // // * Value ranges between 0.0 and 100.0. // * Value 0.0 or 100.0 imply that sampling was not applied. float sampling_percent = 1; // Boolean indicating whether a row filter was applied in the DataScan job. bool row_filter_applied = 2; // Boolean indicating whether a column filter was applied in the DataScan // job. bool column_filter_applied = 3; } // Applied configs for data quality type data scan job. message DataQualityAppliedConfigs { // The percentage of the records selected from the dataset for DataScan. // // * Value ranges between 0.0 and 100.0. // * Value 0.0 or 100.0 imply that sampling was not applied. float sampling_percent = 1; // Boolean indicating whether a row filter was applied in the DataScan job. bool row_filter_applied = 2; } // Post scan actions result for data scan job. message PostScanActionsResult { // The result of BigQuery export post scan action. message BigQueryExportResult { // Execution state for the exporting. enum State { // The exporting state is unspecified. STATE_UNSPECIFIED = 0; // The exporting completed successfully. SUCCEEDED = 1; // The exporting is no longer running due to an error. FAILED = 2; // The exporting is skipped due to no valid scan result to export // (usually caused by scan failed). SKIPPED = 3; } // Execution state for the BigQuery exporting. State state = 1; // Additional information about the BigQuery exporting. string message = 2; } // The result of BigQuery export post scan action. BigQueryExportResult bigquery_export_result = 1; } // The data source of the data scan string data_source = 1; // The identifier of the specific data scan job this log entry is for. string job_id = 2; // The time when the data scan job was created. google.protobuf.Timestamp create_time = 12; // The time when the data scan job started to run. google.protobuf.Timestamp start_time = 3; // The time when the data scan job finished. google.protobuf.Timestamp end_time = 4; // The type of the data scan. ScanType type = 5; // The status of the data scan job. State state = 6; // The message describing the data scan job event. string message = 7; // A version identifier of the spec which was used to execute this job. string spec_version = 8; // The trigger type of the data scan job. Trigger trigger = 9; // The scope of the data scan (e.g. full, incremental). Scope scope = 10; // The result of the data scan job. oneof result { // Data profile result for data profile type data scan. DataProfileResult data_profile = 101; // Data quality result for data quality type data scan. DataQualityResult data_quality = 102; } // The applied configs in the data scan job. oneof appliedConfigs { // Applied configs for data profile type data scan. DataProfileAppliedConfigs data_profile_configs = 201; // Applied configs for data quality type data scan. DataQualityAppliedConfigs data_quality_configs = 202; } // The result of post scan actions. PostScanActionsResult post_scan_actions_result = 11; } // Information about the result of a data quality rule for data quality scan. // The monitored resource is 'DataScan'. message DataQualityScanRuleResult { // The type of the data quality rule. enum RuleType { // An unspecified rule type. RULE_TYPE_UNSPECIFIED = 0; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#nonnullexpectation. NON_NULL_EXPECTATION = 1; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#rangeexpectation. RANGE_EXPECTATION = 2; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#regexexpectation. REGEX_EXPECTATION = 3; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#rowconditionexpectation. ROW_CONDITION_EXPECTATION = 4; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#setexpectation. SET_EXPECTATION = 5; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#statisticrangeexpectation. STATISTIC_RANGE_EXPECTATION = 6; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#tableconditionexpectation. TABLE_CONDITION_EXPECTATION = 7; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#uniquenessexpectation. UNIQUENESS_EXPECTATION = 8; // Please see // https://cloud.google.com/dataplex/docs/reference/rest/v1/DataQualityRule#sqlAssertion. SQL_ASSERTION = 9; } // The evaluation type of the data quality rule. enum EvaluationType { // An unspecified evaluation type. EVALUATION_TYPE_UNSPECIFIED = 0; // The rule evaluation is done at per row level. PER_ROW = 1; // The rule evaluation is done for an aggregate of rows. AGGREGATE = 2; } // Whether the data quality rule passed or failed. enum Result { // An unspecified result. RESULT_UNSPECIFIED = 0; // The data quality rule passed. PASSED = 1; // The data quality rule failed. FAILED = 2; } // Identifier of the specific data scan job this log entry is for. string job_id = 1; // The data source of the data scan (e.g. BigQuery table name). string data_source = 2; // The column which this rule is evaluated against. string column = 3; // The name of the data quality rule. string rule_name = 4; // The type of the data quality rule. RuleType rule_type = 5; // The evaluation type of the data quality rule. EvaluationType evalution_type = 6; // The dimension of the data quality rule. string rule_dimension = 7; // The passing threshold ([0.0, 100.0]) of the data quality rule. double threshold_percent = 8; // The result of the data quality rule. Result result = 9; // The number of rows evaluated against the data quality rule. // This field is only valid for rules of PER_ROW evaluation type. int64 evaluated_row_count = 10; // The number of rows which passed a rule evaluation. // This field is only valid for rules of PER_ROW evaluation type. int64 passed_row_count = 11; // The number of rows with null values in the specified column. int64 null_row_count = 12; // The number of rows returned by the sql statement in the SqlAssertion rule. // This field is only valid for SqlAssertion rules. int64 assertion_row_count = 13; }