更新目錄物件

您可以在PATCH要求的路徑中包含物件的ID,以更新Catalog物件的一部分。 本文介紹在目錄物件上執行PATCH作業的兩種方法:

  • 使用欄位
  • 使用JSON修補程式標籤法
NOTE
物件上的PATCH作業無法修改其可展開的欄位,這些欄位代表相互關聯的物件。 必須直接修改相互關聯的物件。

使用欄位更新

下列範例呼叫示範如何使用欄位和值更新物件。

API格式

PATCH /{OBJECT_TYPE}/{OBJECT_ID}
參數
說明
{OBJECT_TYPE}

要更新的Catalog物件型別。 有效的物件包括:

  • batches
  • dataSets
  • dataSetFiles
{OBJECT_ID}
您要更新之特定物件的識別碼。

要求

以下請求會將資料集的namedescription欄位更新為承載中提供的值。 您可從承載中排除不需要更新的物件欄位。

curl -X PATCH \
  https://platform.adobe.io/data/foundation/catalog/dataSets/5ba9452f7de80400007fc52a \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
       "name":"Updated Dataset Name",
       "description":"Updated description for Sample Dataset"
      }'

回應

成功的回應會傳回陣列,其中包含已更新資料集的ID。 此ID應符合PATCH請求中傳送的ID。 針對此資料集執行GET要求時,現在會顯示只有namedescription已更新,而所有其他值保持不變。

[
    "@/dataSets/5ba9452f7de80400007fc52a"
]

使用JSON修補程式標籤法更新 patch-notation

下列範例呼叫示範如何使用JSON修補程式更新物件,如RFC-6902中所述。

如需JSON修補程式語法的詳細資訊,請參閱API基礎指南

API格式

PATCH /{OBJECT_TYPE}/{OBJECT_ID}
參數
說明
{OBJECT_TYPE}

要更新的Catalog物件型別。 有效的物件包括:

  • batches
  • dataSets
  • dataSetFiles
{OBJECT_ID}
您要更新之特定物件的識別碼。

要求

以下請求會將資料集的namedescription欄位更新為每個JSON修補程式物件中提供的值。 使用JSON修補程式時,您也必須將Content-Type標頭設為application/json-patch+json

curl -X PATCH \
  https://platform.adobe.io/data/foundation/catalog/dataSets/5ba9452f7de80400007fc52a \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json-patch+json' \
  -d '[
        { "op": "add", "path": "/name", "value": "New Dataset Name" },
        { "op": "add", "path": "/description", "value": "New description for dataset" }
      ]'

回應

成功的回應會傳回包含已更新物件ID的陣列。 此ID應符合PATCH請求中傳送的ID。 執行此物件的GET要求現在會顯示只有namedescription已更新,而所有其他值保持不變。

[
    "@/dataSets/5ba9452f7de80400007fc52a"
]

使用PATCH v2標籤法更新 patch-v2-notation

/v2/dataSets/{DATASET_ID}端點提供更靈活的方式,可更新複雜或深度巢狀資料集屬性。

通常,當您更新深層巢狀欄位(例如a.b.c.d)時,路徑中的每個層級都必須已存在。 如果缺少任何層級,您必須在設定最終值之前手動建立每個層級。 這通常需要多項作業,因而增加複雜度並增加錯誤發生率。

/v2/dataSets/{DATASET_ID}端點會自動在路徑中建立任何遺漏的層級。 PATCH v2作業不是在設定d之前手動檢查並新增bc,而是為您執行此操作。

當您傳送PATCH要求至/v2/dataSets/{DATASET_ID}端點時,您只需要傳送最終結構,而且系統會在套用更新之前填入缺少的部分。

NOTE
/v2/dataSets/{id}端點的If-MatchIf-None-Match標頭為選用。 對此端點的PATCH請求會動態合併更新,從而允許進行修改而不擷取最新的資料集版本。 雖然這樣可以減少同時更新造成資料遺失的風險,但您可以搭配最新的etag使用If-Match,以確保變更僅套用至特定版本。 或者,如果資料集自上次已知版本以來未變更,If-None-Match可防止更新。

API格式

PATCH /V2/DATASETS/{DATASET_ID}
參數
說明
{DATASET_ID}
要更新的資料集的識別碼。

要求

curl -X PATCH https://platform.adobe.io/data/foundation/catalog/v2/dataSets/67b3077efa10d92ab7a71858 \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
        "extensions": {
            "adobe_lakeHouse": {
            "rowExpiration": {
                "ttlValue": "P9Y"
            }
            }
        }
    }'

回應

成功的回應會傳回陣列,內含更新資料集的ID,且此ID應符合PATCH請求中傳送的ID。 現在執行此物件的GET要求會顯示extensions.adobe_lakeHouse.rowExpiration物件已建立,不需要先手動建立步驟。

[
    "@/dataSets/67b3077efa10d92ab7a71858"
]

更新陣列欄位 array-fields

物件層級存取控制使用accessLabels欄位來限制存取整個資料集。 如需如何評估資料集存取的詳細資訊,請參閱屬性型存取控制端對端指南

若要取代或清除陣列值欄位(例如accessLabels),請在/v2/dataSets/{DATASET_ID}的PATCH要求中包含其完整所需值。

IMPORTANT
端點會取代整個陣列,而非將其與現有值合併,因此請包含您要保留的每個值。 針對accessLabels,端點會在儲存陣列之前,根據您組織的標籤目錄來驗證每個值。 如果標籤不存在於目錄中,請求會失敗。

若要在資料集上設定存取標籤,請包含您要資料集包含的所有核心和自訂標籤。

要求

下列要求會在資料集上設定core/C1custom/L1存取標籤。

curl -X PATCH https://platform.adobe.io/data/foundation/catalog/v2/dataSets/67b3077efa10d92ab7a71858 \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
        "accessLabels": [
          "core/C1",
          "custom/L1"
        ]
      }'

回應

成功的回應會傳回包含已更新資料集ID的陣列。 為此資料集執行GET要求時,現在會在accessLabels欄位中顯示更新的值。

[
    "@/dataSets/67b3077efa10d92ab7a71858"
]

若要從陣列欄位中移除所有值,請傳送空白陣列。

要求

下列要求會清除資料集的accessLabels欄位。

curl -X PATCH https://platform.adobe.io/data/foundation/catalog/v2/dataSets/67b3077efa10d92ab7a71858 \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
        "accessLabels": []
      }'

回應

成功的回應會傳回包含已更新資料集ID的陣列。 針對此資料集執行GET要求時,現在會顯示accessLabels欄位為空白。

[
    "@/dataSets/67b3077efa10d92ab7a71858"
]

更新前後範例資料集

以下範例JSON說明資料集結構​ PATCH請求之前,其中extensions.adobe_lakeHouse.rowExpiration物件不存在於資料集中。

選取以檢視範例
code language-json
{
    "67b3077efa10d92ab7a71858": {
        "name": "Acme Sales Data",
        "description": "This dataset contains sales transaction records for Acme Corporation.",
        "tags": {
            "adobe/siphon/table/format": [
                "delta"
            ],
            "adobe/pqs/table": [
                "testdataset_20250217_095510_966"
            ]
        },
        "classification": {
            "dataBehavior": "time-series",
            "managedBy": "CUSTOMER"
        },
        "createdUser": "{USER_ID}",
        "imsOrg": "{ORG_ID}",
        "sandboxId": "{SANDBOX_ID}",
        "createdClient": "{CLIENT_ID}",
        "updatedUser": "{USER_ID}",
        "version": "1.0.0",
        "extensions": {
            "adobe_lakeHouse": {},
            "adobe_unifiedProfile": {}
        },
        "created": 1739786110978,
        "updated": 1739786111203,
        "viewId": "{VIEW_ID}",
        "basePath": "{STORAGE_PATH}",
        "fileDescription": {},
        "files": "@/dataSetFiles?dataSetId=67b3077efa10d92ab7a71858",
        "schemaRef": {
            "id": "{SCHEMA_ID}",
            "contentType": "application/vnd.adobe.xed+json; version=1"
        },
        "persistence": {
            "adls": {
                "location": "{STORAGE_PATH}",
                "adlsType": "GEN2",
                "credentials": "@/dataSets/67b3077efa10d92ab7a71858/credentials"
            }
        }
    }
}

下列JSON會在​PATCH請求之後顯示資料集結構。 更新會自動建立遺失的extensions.adobe_lakeHouse.rowExpiration物件,不需要先執行手動建立步驟。 此範例示範/v2/ PATCH要求如何免除多重作業的需求,讓更新更簡單、更有效率。

選取以檢視範例
code language-json
{
    "67b3077efa10d92ab7a71858": {
        "name": "Acme Sales Data",
        "description": "This dataset contains sales transaction records for Acme Corporation.",
        "tags": {
            "adobe/siphon/table/format": [
                "delta"
            ],
            "adobe/pqs/table": [
                "testdataset_20250217_095510_966"
            ]
        },
        "imsOrg": "{ORG_ID}",
        "sandboxId": "{SANDBOX_ID}",
        "extensions": {
            "adobe_lakeHouse": {
                "rowExpiration": {
                    "ttlValue": "{TTL_VALUE}"
                }
            },
            "adobe_unifiedProfile": {}
        },
        "version": "{VERSION}",
        "created": "{CREATED_TIMESTAMP}",
        "updated": "{UPDATED_TIMESTAMP}",
        "createdClient": "{CLIENT_ID}",
        "createdUser": "{USER_ID}",
        "updatedUser": "{USER_ID}",
        "classification": {
            "dataBehavior": "time-series",
            "managedBy": "CUSTOMER"
        },
        "viewId": "{VIEW_ID}",
        "basePath": "{STORAGE_PATH}",
        "fileDescription": {},
        "files": "@/dataSetFiles?dataSetId=67b3077efa10d92ab7a71858",
        "schemaRef": {
            "id": "{SCHEMA_ID}",
            "contentType": "{CONTENT_TYPE}"
        },
        "persistence": {
            "adls": {
                "location": "{STORAGE_PATH}",
                "adlsType": "{STORAGE_TYPE}",
                "credentials": "@/dataSets/67b3077efa10d92ab7a71858/credentials"
            }
        }
    }
}
recommendation-more-help
experience-platform-help-catalog