Datastore 大量刪除範本 [已淘汰]

這個範本已淘汰,並將於 2023 年第 3 季移除。 請改用 Firestore 大量刪除 範本。

「Datastore 大量刪除範本」這個管道可使用指定的 GQL 查詢從 Datastore 讀取實體資料,然後再刪除選定目標專案中所有相符的實體。這個管道可讓您選擇是否要傳送 JSON 編碼的 Datastore 實體傳送到 JavaScript UDF,而您可以藉由傳回 null 值來篩選實體。

管道相關規定

  • 執行範本前,必須先在專案中設定 Datastore。
  • 假如讀取和刪除所在的 Datastore 執行個體不同,Dataflow Worker 服務帳戶必須有權限可以從其中一個執行個體讀取,再從另一個刪除。
  • Datastore 執行個體必須啟用資料庫寫入功能。

範本參數

參數 說明
datastoreReadGqlQuery 指定符合刪除條件的實體的 GQL 查詢,使用僅限鍵查詢可提升效能。例如:「SELECT __key__ FROM MyKind」。
datastoreReadProjectId 您要使用 GQL 查詢讀取的實體 (用於比對條件) 的 Datastore 執行個體專案 ID。
datastoreDeleteProjectId 要刪除相符實體的 Datastore 執行個體專案 ID,如要在同一個 Datastore 執行個體中讀取和刪除,則可以與 datastoreReadProjectId 相同。
datastoreReadNamespace (選用) 要求實體的命名空間,預設命名空間為 ""。
datastoreHintNumWorkers (選用) Datastore 升速節流步驟中預期工作站數量的提示。預設值為 500
javascriptTextTransformGcsPath (選用) 定義要使用 JavaScript 使用者定義函式 (UDF) 的 .js 檔案 Cloud Storage URI。例如:gs://my-bucket/my-udfs/my_file.js
javascriptTextTransformFunctionName (選用) 您要使用的 JavaScript 使用者定義函式 (UDF) 名稱。舉例來說,如果您的 JavaScript 函式程式碼是 myTransform(inJson) { /*...do stuff...*/ },則函式名稱就是 myTransform。如需 JavaScript UDF 範例,請參閱「UDF 範例」。 如果函式對於指定 Datastore 實體傳回未定義的值或 null,則該實體就不會刪除。

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the Bulk Delete Entities in Datastore template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud

在殼層或終端機中執行範本:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Datastore_to_Datastore_Delete \
    --region REGION_NAME \
    --parameters \
datastoreReadGqlQuery="GQL_QUERY",\
datastoreReadProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID,\
datastoreDeleteProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID

更改下列內容:

  • JOB_NAME: 您選擇的不重複工作名稱
  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • GQL_QUERY:您要用來比對符合刪除條件的實體
  • DATASTORE_READ_AND_DELETE_PROJECT_ID:您的 Datastore 執行個體專案 ID。這個例子讀取和刪除都是在同一個 Datastore 執行個體。

API

如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 projects.templates.launch

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Datastore_to_Datastore_Delete
{
   "jobName": "JOB_NAME",
   "parameters": {
       "datastoreReadGqlQuery": "GQL_QUERY",
       "datastoreReadProjectId": "DATASTORE_READ_AND_DELETE_PROJECT_ID",
       "datastoreDeleteProjectId": "DATASTORE_READ_AND_DELETE_PROJECT_ID"
   },
   "environment": { "zone": "us-central1-f" }
   }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • GQL_QUERY:您要用來比對符合刪除條件的實體
  • DATASTORE_READ_AND_DELETE_PROJECT_ID:您的 Datastore 執行個體專案 ID。這個例子讀取和刪除都是在同一個 Datastore 執行個體。

後續步驟