Analizza i metadati Vertex ML

Puoi utilizzare Vertex ML Metadata per monitorare e analizzare i metadati prodotti dai tuoi sistemi di machine learning (ML). Monitorando questi metadati, diventa più facile analizzare il comportamento del sistema ML. In questo modo puoi comprendere le variazioni nel rendimento del sistema o confrontare gli elementi prodotti dal sistema di ML.

Se non hai mai utilizzato Vertex ML Metadata, leggi l'introduzione a Vertex ML Metadata per scoprire di più su come monitorare e analizzare i metadati del tuo flusso di lavoro di ML.

Scopri come eseguire query su Vertex ML Metadata che vuoi analizzare nei modi seguenti:

  • Esegui una query per trovare tutti gli elementi, le esecuzioni o il contesto che corrispondono ai tuoi criteri di filtro.
  • Esegui query sugli elementi di input e di output di un'esecuzione, nonché sugli eventi, utilizzati per collegare gli elementi all'esecuzione.
  • Esegui una query per il sottografo della linea di successione di un contesto. Questa query restituisce gli elementi e le esecuzioni di un contesto, nonché gli eventi che collegano gli elementi alle esecuzioni.

Esegui query su artefatti, esecuzioni e contesti

Puoi utilizzare l'SDK Vertex AI per Python o l'API REST per eseguire query sui record di artefatti, esecuzioni e contesti utilizzando i filtri per creare query come la seguente:

  • Quali versioni di un modello addestrato hanno raggiunto una determinata soglia di qualità?
  • Quale set di dati viene utilizzato in una determinata pipeline?

Le sezioni seguenti mostrano come creare filtri e come eseguire query su elementi, esecuzioni e contesti.

Panoramica della sintassi dei filtri

Le sezioni seguenti descrivono come utilizzare i filtri per eseguire query su elementi, esecutioni e contesti.

Campi

I seguenti campi sono supportati per l'applicazione di filtri ad elementi, esecuzioni e contesti.

Artefatto Esecuzione Contesto
name
display_name
schema_title
create_time
update_time
metadata
state
uri

Il filtro deve essere racchiuso tra virgolette. Le virgolette che fanno parte del filtro devono essere precedute da una barra inversa.

Operatori di confronto

Nei filtri puoi utilizzare i seguenti operatori di confronto: =, !=, <, >, >=, <=.

Ad esempio, i seguenti filtri per trovare tutti gli elementi in cui il nome visualizzato è my_artifact.

REST

display_name=\"my_artifact\"

Python

"display_name=\"my_artifact\""

Per i campi di stringa, puoi utilizzare i filtri con caratteri jolly con il carattere *.

Per i campi timestamp come create_time e update_time, devi formattare la data utilizzando il formato RFC 3339, ad esempio:

REST

create_time=\"2021-05-11T12:30:00-08:00\"

Python

"create_time=\"2021-05-11T12:30:00-08:00\""

Operatori logici

Puoi utilizzare gli operatori logici AND e OR per combinare i filtri e creare una query complessa.

L'esempio seguente mostra come eseguire query per gli elementi di tipo ai_platform.model e un campo metadata precision con un valore numerico superiore a 0,9.

REST

schema_title=\"ai_platform.Model\"+AND+metadata.precision.number_value>0.9

Python

"create_time=\"schema_title=\"ai_platform.Model\" AND metadata.precision.number_value>0.9"

Filtrare in base ai metadati utilizzando l'operatore di attraversamento

Il campo metadata è un'istanza di google.protobuf.Struct il cui formato è definito nello schema specificato nel campo schema_title. google.protobuf.Struct è una struttura di dati che mappa le chiavi alle istanze di google.protobuf.Value. La struttura di dati google.protobuf.Value memorizza i valori in campi diversi a seconda del tipo di dati. Ad esempio:

  • le stringhe vengono memorizzate come metadata.FIELD_NAME.string_value,
  • i numeri vengono memorizzati come metadata.FIELD_NAME.number_value,
  • I valori booleani vengono memorizzati come metadata.FIELD_NAME.bool_value.

Per filtrare in base a metadata, devi utilizzare l'operatore di attraversamento per accedere al campo in base al quale vuoi applicare il filtro. L'operatore di attraversamento utilizza il seguente formato.

REST

metadata.FIELD_NAME.TYPE_NAME=\"FILTER_VALUE\"

Python

"metadata.FIELD_NAME.TYPE_NAME=\"FILTER_VALUE\""

Ad esempio, considera una struttura di metadati come la seguente:

{
   "field_1": 5,
   "field_2": "example",
   "field_3": {
     ...
   },
   "field_4": [],
   "field_5": true,
}

Le seguenti query mostrano come utilizzare l'operatore di attraversamento per filtrare in base a questi metadati di esempio.

  • Filtra per i record in cui metadata.field_1 ha un valore inferiore a 5.

REST

metadata.field_1.number_value<5

Python

"metadata.field_1.number_value<5"
  • Filtra i record con metadata.field_2 con un valore uguale a example.

REST

metadata.field_2.string_value=\"example\"

Python

"metadata.field_2.string_value=\"example\""
  • Filtra i record con metadata.field_5 con un valore uguale a true.

REST

metadata.field_5.bool_value=true

Python

"metadata.field_5.bool_value=true"

Filtrare i contesti in base alle relazioni principali e secondarie

Puoi utilizzare l'operatore has per trovare i contesti principali o secondari di un contesto specificato.

L'operatore has utilizza il seguente formato:

  • "parent_contexts:\"CONTEXT_RESOURCE_NAME\""
  • "child_contexts:\"CONTEXT_RESOURCE_NAME\""

Il nome del contesto deve essere il nome completo della risorsa del contesto, ad esempio quanto segue: project/PROJECT/locations/LOCATION/metadataStores/METADATA-STORE/contexts/CONTEXT.

I seguenti filtri mostrano come utilizzare l'operatore has:

  • Filtra per tutti i contesti che sono elementi secondari della pipeline specificata.

REST

parent_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\"

Python

"parent_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\""
  • Filtra per tutti i contesti che sono un elemento principale della pipeline specificata.

REST

child_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\"

Python

"child_contexts:\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\""

Filtra contesti, esecuzioni e artefatti per associazione e attribuzione

Puoi utilizzare la funzione in_context() per filtrare in base agli elementi o alle esecuzioni associati a un contesto. Puoi utilizzare la funzione with_execution() per filtrare in base a elementi o contesti specifici associati a un'esecuzione. Analogamente, puoi utilizzare la funzione with_artifact() per filtrare in base a esecuzioni o contesti specifici associati a un artefatto.

Le funzioni di filtro vengono utilizzate nel seguente formato.

  • "in_context(\"CONTEXT_RESOURCE_NAME\")"
  • "with_execution(\"EXECUTION_RESOURCE_NAME\")"
  • "with_artifact(\"ARTIFACT_RESOURCE_NAME\")"

Il contesto, l'esecuzione e i nomi degli elementi devono essere il nome completo della risorsa, come mostrato di seguito.

  • project/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA-STORE/contexts/CONTEXT
  • project/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA-STORE/executions/EXECUTION
  • project/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA-STORE/artifacts/ARTIFACT

L'esempio seguente mostra come filtrare gli oggetti presenti nella pipeline specificata.

REST

in_context(\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\")

Python

"in_context(\"project/12345/locations/us-central1/metadataStores/default/contexts/pipeline_1\")"

Puoi utilizzare un carattere jolly * nelle funzioni di filtro per filtrare in base ai parametri di ogni risorsa. Ad esempio, puoi utilizzare quanto segue per filtrare tutte le esecuzioni che agiscono su un tipo di elemento system.model.

REST

with_artifact(\"*\",\"schema_title='name.model'\")

Python

"with_artifact(\"*\",\"schema_title='name.model'\")"

Di seguito sono riportati gli altri parametri supportati per i quali puoi applicare un filtro

  • input=true/false: filtra i tipi di elementi di input o di output.
  • event_time: filtra le esecuzioni o i tempi degli eventi degli elementi artefatti.
  • Tutti gli altri campi di filtro supportati

Puoi combinare i campi con gli operandi logici per costruire query di filtro complesse. Tieni presente che la profondità massima delle funzioni nidificate supportate è 5.

Esegui query sugli elementi

Gli artefatti, come set di dati e modelli, rappresentano i dati utilizzati o prodotti dal flusso di lavoro di ML. Segui le istruzioni riportate di seguito per eseguire query sugli elementi.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la tua regione.
  • PROJECT_ID: il tuo ID progetto.
  • METADATA_STORE: l'ID dell'archivio metadati in cui viene creato l'artefatto. L'archivio dei metadati predefinito si chiama default.
  • PAGE_SIZE: (facoltativo) Il numero massimo di elementi da restituire. Se questo valore non viene specificato, il servizio restituisce un massimo di 100 record.
  • PAGE_TOKEN: (Facoltativo) un token di pagina di una chiamata MetadataService.ListArtifacts precedente. Specifica questo token per ottenere la pagina successiva dei risultati.
  • FILTER: specifica le condizioni necessarie per includere un elemento nell'insieme di risultati.

Metodo HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti vedere un output simile al seguente. ARTIFACT_ID è l'ID del record dell'elemento.

{
  "artifacts": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/default/artifacts/ARTIFACT_ID",
      "displayName": "Example artifact",
      "uri": "gs://your_bucket_name/artifacts/dataset.csv",
      "etag": "67891011",
      "createTime": "2021-05-18T00:33:13.833Z",
      "updateTime": "2021-05-18T00:33:13.833Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the example artifact."
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "displayName": "Another example artifact",
      "uri": "gs://your_bucket_name/artifacts/dataset-2.csv",
      "etag": "67891012",
      "createTime": "2021-05-18T00:29:24.344Z",
      "updateTime": "2021-05-18T00:29:24.344Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the other example artifact."
    }
  ]
}

Python

Python

from typing import Optional

from google.cloud import aiplatform


def list_artifact_sample(
    project: str,
    location: str,
    display_name_filter: Optional[str] = "display_name=\"my_model_*\"",
    create_date_filter: Optional[str] = "create_time>\"2022-06-11\"",
    order_by: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    combined_filters = f"{display_name_filter} AND {create_date_filter}"
    return aiplatform.Artifact.list(
        filter=combined_filters,
        order_by=order_by,
    )

  • project: il tuo ID progetto. Puoi trovare questi ID nella pagina di benvenuto della console Google Cloud.
  • location: consulta l'elenco delle località disponibili.
  • display_name_filter: filtro da applicare al nome visualizzato durante l'elenco delle risorse con il formato "display_name=\"my_filter\"" .
  • create_date_filter: filtro da applicare al nome create_date durante l'elenco delle risorse con il formato "create_time>\"2022-06-11T12:30:00-08:00\"".

Esegui query sulle esecuzioni

Le esecuzioni rappresentano un passaggio del flusso di lavoro di ML, ad esempio la preelaborazione dei dati o l'addestramento di un modello. Segui le istruzioni riportate di seguito per eseguire query sulle esecuzioni.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la tua regione.
  • PROJECT_ID: il tuo ID progetto.
  • METADATA_STORE: l'ID del repository dei metadati in cui viene creata l'esecuzione. L'archivio dei metadati predefinito si chiama default.
  • PAGE_SIZE: (facoltativo) Il numero massimo di elementi da restituire. Se questo valore non viene specificato, il servizio restituisce un massimo di 100 record.
  • PAGE_TOKEN: (Facoltativo) un token di pagina di una chiamata MetadataService.ListArtifacts precedente. Specifica questo token per ottenere la pagina successiva dei risultati.
  • FILTER: specifica le condizioni necessarie per includere un'esecuzione nell'insieme di risultati.

Metodo HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti vedere un output simile al seguente. EXECUTION_ID è l'ID del record di esecuzione.

{
  "executions": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "displayName": "Example execution 1",
      "etag": "67891011",
      "createTime": "2021-05-18T00:06:56.177Z",
      "updateTime": "2021-05-18T00:06:56.177Z",
      "schemaTitle": "system.Run",
      "schemaVersion": "0.0.1",
      "metadata": {},
      "description": "Description of the example execution."
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "displayName": "Example execution 2",
      "etag": "67891011",
      "createTime": "2021-05-18T00:04:49.659Z",
      "updateTime": "2021-05-18T00:04:49.659Z",
      "schemaTitle": "system.Run",
      "schemaVersion": "0.0.1",
      "metadata": {},
      "description": "Description of the example execution."
    }
  ]
}

Python

Python

from typing import Optional

from google.cloud import aiplatform


def list_execution_sample(
    project: str,
    location: str,
    display_name_filter: Optional[str] = "display_name=\"my_execution_*\"",
    create_date_filter:  Optional[str] = "create_time>\"2022-06-11T12:30:00-08:00\"",
):
    aiplatform.init(
        project=project,
        location=location)

    combined_filters = f"{display_name_filter} AND {create_date_filter}"

    return aiplatform.Execution.list(filter=combined_filters)

  • project: il tuo ID progetto. Puoi trovare questi ID nella pagina di benvenuto della console Google Cloud.
  • location: consulta l'elenco delle località disponibili.
  • display_name_filter: filtro da applicare al nome visualizzato durante l'elenco delle risorse con il formato "display_name=\"my_filter\"" .
  • create_date_filter: filtro da applicare al nome create_date durante l'elenco delle risorse con il formato "create_time>\"2022-06-11T12:30:00-08:00\"".

Esegui query sui contesti

I contesti ti consentono di raggruppare insiemi di esecuzioni, elementi e altri contesti. Segui le istruzioni riportate di seguito per eseguire query sui contesti.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la tua regione.
  • PROJECT_ID: il tuo ID progetto.
  • METADATA_STORE: l'ID del repository dei metadati in cui viene creato il contesto. L'archivio dei metadati predefinito si chiama default.
  • PAGE_SIZE: (facoltativo) Il numero massimo di elementi da restituire. Se questo valore non viene specificato, il servizio restituisce un massimo di 100 record.
  • PAGE_TOKEN: (Facoltativo) un token di pagina di una chiamata MetadataService.ListArtifacts precedente. Specifica questo token per ottenere la pagina successiva dei risultati.
  • FILTER: specifica le condizioni necessarie per includere un contesto nel set di risultati.

Metodo HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti vedere un output simile al seguente. CONTEXT_ID è l'ID del record del contesto.

{
  "contexts": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID",
      "displayName": "Experiment 1",
      "etag": "67891011",
      "createTime": "2021-05-18T22:36:02.153Z",
      "updateTime": "2021-05-18T22:36:02.153Z",
      "parentContexts": [],
      "schemaTitle": "system.Experiment",
      "schemaVersion": "0.0.1",
      "metadata": {}
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID",
      "displayName": "Pipeline run 1",
      "etag": "67891011",
      "createTime": "2021-05-18T22:35:02.600Z",
      "updateTime": "2021-05-18T22:35:02.600Z",
      "parentContexts": [],
      "schemaTitle": "system.PipelineRun",
      "schemaVersion": "0.0.1",
      "metadata": {}
    }
  ]
}

Esegui una query per gli elementi di input e di output di un'esecuzione

Segui le istruzioni riportate di seguito per eseguire query sugli elementi e sulle esecuzioni nel contesto specificato, nonché sugli eventi che collegano gli elementi alle esecuzioni.

SDK Vertex AI per Python

Artefatti di input

Questo esempio di SDK Python prevede la ricerca degli elementi di input di un'esecuzione.

Python

from google.cloud import aiplatform


def get_execution_input_artifacts_sample(
    execution: aiplatform.Execution
):
    return execution.get_input_artifacts()

Artefatti di output

Questo esempio di SDK Python prevede la query degli elementi di output di un'esecuzione.

Python

from google.cloud import aiplatform


def get_execution_output_artifacts_sample(
    execution: aiplatform.Execution
):
    return execution.get_output_artifacts()

REST

Questo esempio REST include query sia per gli elementi di input che di output di un'esecuzione.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la tua regione.
  • PROJECT_ID: il tuo ID progetto.
  • METADATA_STORE: l'ID del repository dei metadati in cui viene creata l'esecuzione. L'archivio dei metadati predefinito si chiama default.
  • EXECUTION_ID: l'ID del record di esecuzione.

Metodo HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID:queryExecutionInputsAndOutputs

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti vedere un output simile al seguente. EXECUTION_ID è l'ID del record di esecuzione. Se l'ID esecuzione non è specificato, Vertex ML Metadata ha creato un identificatore univoco per questa esecuzione. ARTIFACT_ID è l'ID del record dell'elemento.

{
  "artifacts": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "displayName": "Example artifact",
      "uri": "gs://your_bucket_name/artifacts/dataset.csv",
      "etag": "678901011",
      "createTime": "2021-05-18T00:29:24.344Z",
      "updateTime": "2021-05-18T00:29:24.344Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the example artifact."
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "displayName": "Example artifact 2",
      "uri": "gs://your_bucket_name/artifacts/dataset.csv",
      "etag": "678901011",
      "createTime": "2021-05-18T00:33:13.833Z",
      "updateTime": "2021-05-18T00:33:13.833Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the example artifact."
    }
  ],
  "executions": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "displayName": "Example execution 1",
      "etag": "678901011",
      "createTime": "2021-05-18T00:04:49.659Z",
      "updateTime": "2021-05-18T00:04:49.659Z",
      "schemaTitle": "system.Run",
      "schemaVersion": "0.0.1",
      "metadata": {},
      "description": "Description of the example execution."
    }
  ],
  "events": [
    {
      "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "eventTime": "2021-05-18T00:04:49.659Z",,
      "type": "INPUT",
    },
    {
      "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "eventTime": "2021-05-18T00:04:49.659Z",,
      "type": "OUTPUT",
    }
  ]
}

Esegui una query per il sottografo della linea di successione di un contesto

Segui le istruzioni riportate di seguito per eseguire query sugli elementi e sulle esecuzioni nel contesto specificato, nonché sugli eventi che collegano gli elementi alle esecuzioni.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la tua regione.
  • PROJECT_ID: il tuo ID progetto.
  • METADATA_STORE: l'ID del repository dei metadati in cui viene creata l'esecuzione. L'archivio dei metadati predefinito si chiama default.
  • CONTEXT_ID: (Facoltativo) L'ID del record del contesto.

Metodo HTTP e URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID:queryContextLineageSubgraph

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti vedere un output simile al seguente. EXECUTION_ID è l'ID del record di esecuzione. Se l'ID esecuzione non è specificato, Vertex ML Metadata ha creato un identificatore univoco per questa esecuzione. ARTIFACT_ID è l'ID del record dell'elemento.

{
  "artifacts": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "displayName": "Example artifact",
      "uri": "gs://your_bucket_name/artifacts/dataset.csv",
      "etag": "678901011",
      "createTime": "2021-05-18T00:29:24.344Z",
      "updateTime": "2021-05-18T00:29:24.344Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the example artifact."
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "displayName": "Example artifact 2",
      "uri": "gs://your_bucket_name/artifacts/dataset.csv",
      "etag": "678901011",
      "createTime": "2021-05-18T00:33:13.833Z",
      "updateTime": "2021-05-18T00:33:13.833Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the example artifact."
    }
  ],
  "executions": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "displayName": "Example execution 1",
      "etag": "678901011",
      "createTime": "2021-05-18T00:04:49.659Z",
      "updateTime": "2021-05-18T00:04:49.659Z",
      "schemaTitle": "system.Run",
      "schemaVersion": "0.0.1",
      "metadata": {},
      "description": "Description of the example execution."
    }
  ],
  "events": [
    {
      "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "eventTime": "2021-05-18T00:04:49.659Z",,
      "type": "INPUT",
    },
    {
      "artifact": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "execution": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "eventTime": "2021-05-18T00:04:49.659Z",,
      "type": "OUTPUT",
    }
  ]
}

Passaggi successivi