以下のリクエストとレスポンスの例では、sensitiveフィールドはカラムへのタグ付けのUIでサポートされなくなっていることに注意してください。sensitiveフィールドは下位互換性をサポートするためにAPIにのみ残っています。
データベースまたはテーブルにタグに基づいてアノテーションを付けたり検索したりできますが、ポリシーベースのデータベース権限を有効にする必要があります。タグのアクセス制御の詳細をご覧ください。
テーブルのhostカラムにPIIタグを付与できます。以下の例では、タグID: ff0e21db-af92-419f-b936-0c9c1601f2f7を持つPIIタグが、database_id:484834とtable_id: 2767455を使用してテーブルの_host_カラムに付与されています。
$ curl --location --request POST 'https://api-data-def-repo.treasuredata.com/v1/column-annotation/bulk?tableId=484834.2767455' \
--header 'Authorization: TD1 123/abcdef•••••••••••••••••••••••0123456789' \
--header 'Content-Type: application/json' \
--data-raw '{
"data": [
{
"attributes": {
"sensitive": false
},
"relationships": {
"annotation-type": {
"data": {
"id": "3213869e-7e13-45fc-99a7-1b039a7333a5",
"type": "annotation-type"
}
},
"column": {
"data": {
"id": "host",
"type": "treasure-data-column"
}
}
},
"type": "treasure-data-column"
}
]
}'レスポンス例
{
"data": [
{
"id": "ff0e21db-af92-419f-b936-0c9c1601f2f7",
"attributes": {
"comment": "Personal information",
"createdAt": "2022-01-13T21:24:57.321823Z",
"sensitive": false
},
"relationships": {
"annotation-type": {
"data": {
"type": "annotation-type",
"id": "3213869e-7e13-45fc-99a7-1b039a7333a5",
"name": "PII"
}
},
"table": {
"data": {
"type": "treasure-data-table",
"id": "484834.2767455"
}
},
"column": {
"data": {
"type": "treasure-data-column",
"id": "host"
}
},
"created-by": {
"data": {
"type": "treasure-data-user",
"id": "18174"
}
}
},
"type": "column-annotation"
}
],
"links": {
"first": "/v1/column-annotation?filter%5BtableId%5D=484834.2767455",
"self": "/v1/column-annotation?filter%5BtableId%5D=484834.2767455"
},
"meta": {
"perPage": 1
}
}- POSTメソッドとannotation-typeパラメータを使用して、新しいリソースタグを作成します。
curl --location --request POST 'https://api-data-def-repo.treasuredata.com/v1/annotation-type/custom' \
--header 'Authorization: TD1 ${123/abcdef•••••••••••••••••••••••0123456789}' \
--header 'Content-Type: application/json' \
--data-raw '{
"data": {
"attributes": {
"color": "SECONDARY",
"comment": "workflow-for-seasonal-sales",
"name": "seasonal-sales",
"humanReadableName": "seasonal-sales",
"namespace": "RESOURCE"
}
}
}'レスポンス例
後のステップを完了するために、タグIDを保存する必要があります。このレスポンス例では、タグIDは: ab48acf2-89f7-45a2-b7da-5569e47eb862です。
{"id":"ab48acf2-89f7-45a2-b7da-5569e47eb862","attributes":{"name":"seasonal-sales","humanReadableName":"seasonal-sales","comment":"workflow-for-seasonal-sales","version":1,"createdAt":"2022-05-17T02:15:06.822978Z","updatedAt":"2022-05-17T02:15:06.822978Z","color":"SECONDARY","namespace":"RESOURCE"},"type":"annotation-type"}- GETメソッドとワークフローのAPI /api/projects?name_pattern=blackfriday_saleを使用してプロジェクトIDを取得します。
curl --location --request GET 'https://api-workflow.treasuredata.com/api/projects?name_pattern=blackfriday-sale' \
--header 'Authorization: TD1 ${123/abcdef•••••••••••••••••••••••0123456789}'レスポンス例
後で使用するためにプロジェクトIDを保存します。以下の例では、プロジェクトIDは: 187725です。
{
"projects": [
{
"id": "187725",
"name": "blackfriday_sale",
"revision": "26606e4c-93ec-456e-86b3-61390ce8ad1a",
"createdAt": "2022-02-10T05:48:03Z",
"updatedAt": "2022-02-10T05:48:03Z",
"deletedAt": null,
"archiveType": "s3",
"archiveMd5": "Vw3N3vAtOMNq21mvQ2eRhg=="
}
]
}- ワークフローのタグを作成
POSTメソッドとクエリパラメータfilter[projectId]およびfilter[worfklowId]を使用して、ワークフローにタグを付与します。
curl --location --request POST 'https://api-data-def-repo.treasuredata.com/v1/workflow-annotation/bulk?projectId=187725&workflowId=daily-ingestion' \
--header 'Authorization: TD1 ${123/abcdef•••••••••••••••••••••••0123456789}' \
--header 'Content-Type: application/json' \
--data-rawサンプルペイロードリクエスト
{
"data": [
{
"type": "workflow-annotation",
"attributes": {
"comment": null
},
"relationships": {
"annotation-type": {
"data": {
"id": "ab48acf2-89f7-45a2-b7da-5569e47eb862",
"type": "annotation-type"
}
},
"workflow": {
"data": {
"type": "treasure-data-workflow",
"id": "daily-ingestions"
}
}
}
}
]
}レスポンス例
{
"data": [
{
"id": "ec6993ca-b14a-459e-8b44-2a63001799a1",
"attributes": {
"comment": null,
"createdAt": "2022-05-17T05:28:57.029777Z"
},
"relationships": {
"annotation-type": {
"data": {
"type": "annotation-type",
"id": "ab48acf2-89f7-45a2-b7da-5569e47eb862",
"name": "seasonal-sales"
}
},
"workflow": {
"data": {
"type": "treasure-data-workflow",
"id": "daily-ingestions"
}
},
"project": {
"data": {
"type": "treasure-data-workflow-project",
"id": "187725"
}
},
"created-by": {
"data": {
"type": "treasure-data-user",
"id": "1273"
}
}
},
"type": "workflow-annotation"
}
],
"links": {
"first": "/v1/workflow-annotation?filter%5BprojectId%5D=187725",
"self": "/v1/workflow-annotation?filter%5BprojectId%5D=187725"
},
"meta": {
"perPage": 1
}
}タグをフィルターとして使用して、タグに基づいてデータベースを検索できます。例えば、以下の例ではPIIタグを使用しており、結果としてPIIタグがテーブルID 607222.3276426のテーブル内のdobカラムで見つかったことが示されています。
$ curl -s --request GET "https://api-data-def-repo.treasuredata.com/v1/column-annotation/lookup?annotationTypeName=PII" \
--header 'Authorization: TD1 ${123/abcdef•••••••••••••••••••••••0123456789}'レスポンス例
{
"data": [
{
"id": "465302e6-67c0-4b33-9462-2f501c511601",
"attributes": {
"comment": "",
"createdAt": "2021-09-30T07:40:01.792499Z",
"sensitive": false
},
"relationships": {
"annotation-type": {
"data": {
"type": "annotation-type",
"id": "2f27b00e-9377-419e-91c3-4456598c30a8",
"name": "PII"
}
},
"table": {
"data": {
"type": "treasure-data-table",
"id": "607222.3276426"
}
},
"column": {
"data": {
"type": "treasure-data-column",
"id": "dob"
}
},
"created-by": {
"data": {
"type": "treasure-data-user",
"id": "33648"
}
}
},
"type": "column-annotation"
},
...
],
"links": {
"first": "/v1/column-annotation/lookup?annotationTypeName=PII",
"self": "/v1/column-annotation/lookup?annotationTypeName=PII"
},
"meta": {
"perPage": 250
}
}GETコマンドとクエリパラメータannotationTypeNameを使用して、タグでプロジェクトを検索できます。以下の例では、ユーザーはdaily_workflowでタグ付けされたワークフローのリストを検索しています。
curl --request GET 'https://api-data-def-repo.treasuredata.com/v1/project-annotation?annotationTypeName=daily-workflow' \ \
--header 'Authorization: TD1 ${123/abcdef•••••••••••••••••••••••0123456789}'サンプルレスポンス
このレスポンスは、daily_workflowでタグ付けされたワークフローが1つだけあることを意味します。このワークフローはworkflow_name(プロジェクト187725内)と呼ばれています。
{
"data": [
{
"id": "4ad2008c-1019-4ced-8e53-74b155df0c0f",
"attributes": {
"comment": null,
"createdAt": "2022-05-17T02:50:36.586640Z"
},
"relationships": {
"annotation-type": {
"data": {
"type": "annotation-type",
"id": "4a45b1de-b27b-4414-92d6-4224490a5078",
"name": "daily-workflow"
}
},
"project": {
"data": {
"type": "treasure-data-workflow-project",
"id": "187725"
}
},
"created-by": {
"data": {
"type": "treasure-data-user",
"id": "1273"
}
}
},
"type": "project-annotation"
}
],
"links": {
"first": "/v1/project-annotation?annotationTypeName=daily-workflow",
"self": "/v1/project-annotation?annotationTypeName=daily-workflow"
},
"meta": {
"perPage": 250
}
}GETコマンドとクエリパラメータannotationTypeNameを使用して、タグでワークフローを検索できます。以下の例では、ユーザーはdaily_workflowタグでタグ付けされたワークフローのリストを検索しています。
curl --location --request GET 'https://api-data-def-repo.treasuredata.com/v1/workflow-annotation?annotationTypeName=daily-workflow' \ \
--header 'Authorization: TD1 ${123/abcdef•••••••••••••••••••••••0123456789}'サンプルレスポンス
このレスポンスは、daily-workflowでタグ付けされたワークフローが1つだけあることを意味します。このワークフローはdaily-ingestions(プロジェクト187725内)と呼ばれています。
{
"data": [
{
"id": "ec6993ca-b14a-459e-8b44-2a63001799a1",
"attributes": {
"comment": null,
"createdAt": "2022-05-17T05:28:57.029777Z"
},
"relationships": {
"annotation-type": {
"data": {
"type": "annotation-type",
"id": "4a45b1de-b27b-4414-92d6-4224490a5078",
"name": "daily-workflow"
}
},
"workflow": {
"data": {
"type": "treasure-data-workflow",
"id": "daily-ingestions"
}
},
"project": {
"data": {
"type": "treasure-data-workflow-project",
"id": "187725"
}
},
"created-by": {
"data": {
"type": "treasure-data-user",
"id": "1273"
}
}
},
"type": "workflow-annotation"
}
],
"links": {
"first": "/v1/workflow-annotation?annotationTypeName=daily_workflow",
"self": "/v1/workflow-annotation?annotationTypeName=daily_workflow"
},
"meta": {
"perPage": 250
}
}