Skip to content
Last updated

REST APIを使用したタグの付与と検索

以下のリクエストとレスポンスの例では、sensitiveフィールドはカラムへのタグ付けのUIでサポートされなくなっていることに注意してください。sensitiveフィールドは下位互換性をサポートするためにAPIにのみ残っています。

データベースまたはテーブルにタグに基づいてアノテーションを付けたり検索したりできますが、ポリシーベースのデータベース権限を有効にする必要があります。タグのアクセス制御の詳細をご覧ください。

カラムにタグを付与

テーブルのhostカラムにPIIタグを付与できます。以下の例では、タグID: ff0e21db-af92-419f-b936-0c9c1601f2f7を持つPIIタグが、database_id:484834table_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
  }
}

ワークフローにタグを付与

  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"}
  1. 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=="
        }
    ]
}
  1. ワークフローのタグを作成

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
        }
    }