Menganalisis Vertex ML Metadata

Anda dapat menggunakan Vertex ML Metadata untuk melacak dan menganalisis metadata yang dihasilkan oleh sistem machine learning (ML) Anda. Dengan melacak metadata ini, akan lebih mudah untuk menganalisis perilaku sistem ML Anda. Hal ini dapat membantu Anda memahami perubahan performa sistem, atau membantu membandingkan artefak yang dihasilkan oleh sistem ML Anda.

Jika Anda baru mengenal Vertex ML Metadata, baca pengantar Vertex ML Metadata untuk mempelajari lebih lanjut tentang melacak dan menganalisis metadata alur kerja ML Anda.

Pelajari cara membuat kueri untuk Vertex ML Metadata yang ingin Anda analisis dengan cara berikut:

  • Kueri untuk semua artefak, eksekusi, atau konteks yang cocok dengan pemfilteran kriteria tertentu Anda.
  • Kueri untuk artefak input dan output eksekusi beserta peristiwa, yang digunakan untuk menghubungkan artefak ke eksekusi.
  • Kueri untuk subgrafik silsilah milik konteks. Kueri ini menampilkan artefak dan eksekusi konteks, beserta peristiwa yang menghubungkan artefak dengan eksekusi.

Kueri untuk artefak, eksekusi, dan konteks

Anda dapat menggunakan Vertex AI SDK untuk Python atau REST API guna membuat kueri untuk artefak, eksekusi, dan konteks menggunakan filter untuk membuat kueri seperti berikut:

  • Versi model terlatih mana yang mencapai batas kualitas tertentu?
  • Set data mana yang digunakan di dalam pipeline tertentu?

Bagian berikut ini menunjukkan cara untuk membuat filter, dan cara membuat kueri untukartefak daneksekusi , serta konteks.

Ringkasan sintaksis filter

Bagian berikut menjelaskan cara menggunakan filter untuk membuat kueri untuk artefak, eksekusi, dan konteks.

Kolom

Kolom berikut ini didukung pada saat memfilter artefak, eksekusi, dan konteks.

Artefak Eksekusi Konteks
name
display_name
schema_title
create_time
update_time
metadata
state
uri

Filter Anda harus digabungkan dalam tanda kutip. Setiap tanda kutip yang merupakan bagian dari filter harus di-escape dengan garis miring terbalik.

Operator perbandingan

Anda dapat menggunakan operator perbandingan berikut ini di dalam filter Anda: =, !=, <, >, >=, <=.

Misalnya, filter berikut ini adalah untuk menemukan semua artefak dengan nama tampilan my_artifact.

REST

display_name=\"my_artifact\"

Python

"display_name=\"my_artifact\""

Untuk kolom string, Anda dapat menggunakan pemfilteran karakter pengganti dengan karakter *.

Untuk kolom stempel waktu seperti create_time dan update_time, Anda harus memformat tanggal menggunakan format RFC 3339 — misalnya:

REST

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

Python

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

Operator Logis

Anda dapat menggunakan operator logis AND dan OR untuk menggabungkan filter guna membuat kueri yang kompleks.

Contoh berikut menunjukkan cara membuat kueri untuk artefak jenis ai_platform.model, dan kolom metadata precision dengan nilai numerik yang lebih besar dari 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"

Memfilter metadata menggunakan operator traversal

Kolom metadata adalah instance google.protobuf.Struct yang formatnya ditentukan dalam skema yang telah ditentukan di dalam kolom schema_title. google.protobuf.Struct adalah struktur data yang memetakan kunci ke instance google.protobuf.Value. Struktur data google.protobuf.Value menyimpan nilai di dalam kolom yang berbeda-beda, bergantung pada jenis datanya. Contoh:

  • string disimpan sebagai metadata.FIELD_NAME.string_value,
  • angka disimpan sebagai metadata.FIELD_NAME.number_value,
  • boolean disimpan sebagai metadata.FIELD_NAME.bool_value.

Untuk memfilter metadata, Anda harus menggunakan operator traversal untuk melintasi kolom yang ingin Anda filter. Operator traversal menggunakan format berikut ini.

REST

metadata.FIELD_NAME.TYPE_NAME=\"FILTER_VALUE\"

Python

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

Misalnya, perhatikan struktur metadata seperti berikut:

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

Kueri berikut ini menggambarkan cara untuk menggunakan operator traversal untuk memfilter metadata contoh ini.

  • Filter data yang memiliki metadata.field_1 dengan nilai yang kurang dari 5.

REST

metadata.field_1.number_value<5

Python

"metadata.field_1.number_value<5"
  • Filter kumpulan data yang memiliki metadata.field_2, dengan nilai yang sama dengan example.

REST

metadata.field_2.string_value=\"example\"

Python

"metadata.field_2.string_value=\"example\""
  • Filter kumpulan data yang memiliki metadata.field_5, dengan nilai yang sama dengan true.

REST

metadata.field_5.bool_value=true

Python

"metadata.field_5.bool_value=true"

Memfilter konteks menurut hubungan induk dan turunannya

Anda dapat menggunakan operator has untuk menemukan konteks yang merupakan induk atau turunan dari konteks yang telah ditentukan.

Operator has menggunakan format berikut ini:

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

Nama konteks harus berupa nama resource lengkap milik konteks, seperti berikut ini: project/PROJECT/locations/LOCATION/metadataStores/METADATA-STORE/contexts/CONTEXT.

Filter berikut ini menunjukkan cara untuk menggunakan operator has:

  • Filter untuk semua konteks yang merupakan turunan dari pipeline yang telah ditentukan.

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\""
  • Filter untuk semua konteks yang merupakan induk dari pipeline yang telah ditentukan.

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\""

Memfilter konteks, eksekusi, dan artefak berdasarkan pengaitan dan atribusi

Anda dapat menggunakan fungsi in_context() untuk memfilter artefak atau eksekusi yang terkait dengan konteks. Anda dapat menggunakan fungsi with_execution() untuk memfilter artefak atau konteks tertentu, yang terkait dengan eksekusi. Demikian pula, Anda dapat menggunakan fungsi with_artifact() untuk memfilter eksekusi atau konteks tertentu yang terkait dengan sebuah artefak.

Fungsi filter digunakan dalam format berikut ini.

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

Konteks, eksekusi, dan nama artefak harus berupa nama lengkap resource, seperti yang berikut ini.

  • 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

Contoh berikut ini menunjukkan cara untuk memfilter objek yang berada di pipeline yang telah ditentukan.

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\")"

Anda dapat menggunakan karakter pengganti * di dalam fungsi filter untuk memfilter parameter setiap resource. Misalnya, Anda dapat menggunakan kode berikut ini untuk memfilter semua eksekusi yang berfungsi pada jenis artefak system.model.

REST

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

Python

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

Parameter lain yang didukung yang dapat Anda filter adalah sebagai berikut

  • input=true/false: Memfilter jenis artefak input atau output.
  • event_time: Memfilter waktu peristiwa atau eksekusi artefak.
  • Semua kolom filter lain yang didukung

Anda dapat menggabungkan kolom dengan operand logis untuk membuat kueri filter yang kompleks. Perhatikan bahwa kedalaman maksimum fungsi bertingkat yang didukung adalah 5.

Kueri untuk artefak

Artefak, seperti set data dan model, mewakili data yang digunakan atau dihasilkan oleh alur kerja ML Anda. Gunakan petunjuk berikut ini guna membuat kueri untuk artefak.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region Anda.
  • PROJECT_ID: Project ID Anda.
  • METADATA_STORE: ID penyimpanan metadata tempat artefaknya dibuat. Penyimpanan metadata default diberi nama default.
  • PAGE_SIZE: (Opsional) Jumlah maksimum artefak yang akan ditampilkan. Jika nilai ini tidak ditentukan, maka layanan akan menampilkan maksimum 100 data.
  • PAGE_TOKEN: (Opsional) Token halaman dari panggilan MetadataService.ListArtifacts sebelumnya. Tentukan token ini untuk mendapatkan halaman hasil berikutnya.
  • FILTER: Menentukan kondisi yang diperlukan untuk menyertakan artefak dalam kumpulan hasil.

Metode HTTP dan 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

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat output yang mirip dengan berikut ini. ARTIFACT_ID adalah ID dari kumpulan data artefak.

{
  "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: Project ID Anda. Anda dapat menemukan ID ini di halaman sambutan Konsol Google Cloud.
  • location: Lihat Daftar lokasi yang tersedia.
  • display_name_filter: Filter yang akan diterapkan ke nama tampilan pada saat mencantumkan resource dengan format "display_name=\"my_filter\"" .
  • create_date_filter: Filter yang akan diterapkan ke nama create_date saat mencantumkan resource dengan format "create_time>\"2022-06-11T12:30:00-08:00\"",.

Kueri untuk eksekusi

Eksekusi mewakili langkah dalam alur kerja ML milik Anda, seperti prapemrosesan data terlebih dahulu, atau melatih model. Gunakan petunjuk berikut ini untuk mengkueri eksekusi.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region Anda.
  • PROJECT_ID: Project ID Anda.
  • METADATA_STORE: ID penyimpanan metadata tempat eksekusinya dibuat. Penyimpanan metadata default diberi nama default.
  • PAGE_SIZE: (Opsional) Jumlah maksimum artefak yang akan ditampilkan. Jika nilai ini tidak ditentukan, maka layanan akan menampilkan maksimum 100 data.
  • PAGE_TOKEN: (Opsional) Token halaman dari panggilan MetadataService.ListArtifacts sebelumnya. Tentukan token ini untuk mendapatkan halaman hasil berikutnya.
  • FILTER: Menentukan kondisi yang diperlukan untuk menyertakan eksekusi dalam kumpulan hasil.

Metode HTTP dan 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

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat output yang mirip dengan berikut ini. EXECUTION_ID adalah ID data eksekusi.

{
  "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: Project ID Anda. Anda dapat menemukan ID ini di halaman sambutan Konsol Google Cloud.
  • location: Lihat Daftar lokasi yang tersedia.
  • display_name_filter: Filter yang akan diterapkan ke nama tampilan pada saat mencantumkan resource dengan format "display_name=\"my_filter\"" .
  • create_date_filter: Filter yang akan diterapkan ke nama create_date saat mencantumkan resource dengan format "create_time>\"2022-06-11T12:30:00-08:00\"",.

Kueri untuk konteks

Konteks memungkinkan Anda mengelompokkan kumpulan eksekusi, artefak, dan konteks lainnya. Gunakan petunjuk berikut ini untuk membuat kueri konteks.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region Anda.
  • PROJECT_ID: Project ID Anda.
  • METADATA_STORE: ID penyimpanan metadata tempat konteks dibuat. Penyimpanan metadata default diberi nama default.
  • PAGE_SIZE: (Opsional) Jumlah maksimum artefak yang akan ditampilkan. Jika nilai ini tidak ditentukan, maka layanan akan menampilkan maksimum 100 data.
  • PAGE_TOKEN: (Opsional) Token halaman dari panggilan MetadataService.ListArtifacts sebelumnya. Tentukan token ini untuk mendapatkan halaman hasil berikutnya.
  • FILTER: Menentukan kondisi yang diperlukan untuk menyertakan konteks dalam kumpulan hasil.

Metode HTTP dan 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

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat output yang mirip dengan berikut ini. CONTEXT_ID adalah ID data konteks tersebut.

{
  "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": {}
    }
  ]
}

Kueri artefak input dan output eksekusi

Gunakan petunjuk berikut ini untuk membuat kueri artefak dan eksekusi dalam konteks yang ditentukan, beserta peristiwa yang menghubungkan artefak dengan eksekusi.

Vertex AI SDK untuk Python

Artefak input

Contoh Python SDK ini melibatkan pembuatan kueri untuk artefak input eksekusi.

Python

from google.cloud import aiplatform


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

Artefak output

Contoh Python SDK ini melibatkan pembuatan kueri untuk artefak output eksekusi.

Python

from google.cloud import aiplatform


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

REST

Contoh REST ini mencakup pembuatan kueri untuk artefak input dan output eksekusi.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region Anda.
  • PROJECT_ID: Project ID Anda.
  • METADATA_STORE: ID penyimpanan metadata tempat eksekusinya dibuat. Penyimpanan metadata default diberi nama default.
  • EXECUTION_ID: ID data eksekusi tersebut.

Metode HTTP dan URL:

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

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat output yang mirip dengan berikut ini. EXECUTION_ID adalah ID kumpulan data eksekusi. Jika ID eksekusi tidak ditentukan, Vertex ML Metadata akan membuat ID unik untuk eksekusi ini. ARTIFACT_ID adalah ID dari kumpulan data artefak.

{
  "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",
    }
  ]
}

Kueri subgrafik silsilah konteks

Gunakan petunjuk berikut ini untuk membuat kueri artefak dan eksekusi dalam konteks yang ditentukan, beserta peristiwa yang menghubungkan artefak dengan eksekusi.

REST

Sebelum menggunakan data permintaan mana pun, lakukan penggantian berikut:

  • LOCATION_ID: Region Anda.
  • PROJECT_ID: Project ID Anda.
  • METADATA_STORE: ID penyimpanan metadata tempat eksekusinya dibuat. Penyimpanan metadata default diberi nama default.
  • CONTEXT_ID: (Opsional) ID data konteks tersebut.

Metode HTTP dan URL:

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

Untuk mengirim permintaan, perluas salah satu opsi berikut:

Anda akan melihat output yang mirip dengan berikut ini. EXECUTION_ID adalah ID kumpulan data eksekusi. Jika ID eksekusi tidak ditentukan, Vertex ML Metadata akan membuat ID unik untuk eksekusi ini. ARTIFACT_ID adalah ID dari kumpulan data artefak.

{
  "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",
    }
  ]
}

Langkah selanjutnya