View a markdown version of this page

AWS Glue Data Catalog のセマンティック検索 - AWS Glue

AWS Glue Data Catalog のセマンティック検索

注記

ビジネスコンテキストとセマンティック検索は AWS Glue のプレビューであり、変更される可能性があります。

セマンティック検索を使用すると、キーワードの完全一致に加えて、意味によってデータアセットを検出できます。結果は、クエリとのセマンティック類似性によってランク付けされます。アセットタイプ、メタデータフィールド、用語集の用語のフィルターを使用して結果を絞り込むことができます。

SearchAssets API の使用

SearchAssets API は、SearchTextFilterClause、またはその両方を受け入れます。どちらも指定しない場合、すべてのアセットが返されます。任意指定のパラメータ: SortMaxResultsNextToken

テキスト検索

aws glue search-assets \ --search-text "customer purchases"

出力の例:

{ "Items": [ {"Id": "c9vq7sh2fk4t2h", "AssetName": "Customer Sales Transactions", "AssetTypeId": "Table"} ] }

--max-results で結果を制限する:

aws glue search-assets \ --search-text "quarterly revenue" \ --max-results 5

検索結果のフィルタリング

FilterClause を使用して結果を絞り込みます。サポートされているフィルタのタイプ:

  • AttributeFilter – 演算子: equalsgreaterThangreaterThanOrEqualslessThanlessThanOrEqualsnotExists

  • AndAllFilters – すべてのフィルターが一致している必要があります (論理 AND)。

  • OrAnyFilters – 少なくとも 1 つが一致する必要があります (論理 OR)。

1 つの属性でフィルタリングするには

テーブルアセットのみにフィルタリングします:

aws glue search-assets \ --search-text "revenue" \ --filter-clause '{ "AttributeFilter": { "Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"} } }'
フィルターを AND ロジックと組み合わせるには

タイムスタンプの後に更新されたテーブルアセットを検索します:

aws glue search-assets \ --search-text "customer data" \ --filter-clause '{ "AndAllFilters": [ {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}, {"AttributeFilter": {"Attribute": "updatedAt", "Operator": "greaterThan", "Value": {"LongValue": 1718400000}}} ] }'
フィルターを OR ロジックと組み合わせるには

テーブルまたはスキルアセットを検索します:

aws glue search-assets \ --search-text "customer data" \ --filter-clause '{ "OrAnyFilters": [ {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}, {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}} ] }'
用語集の用語でフィルタリングするには

特定の用語集の用語でタグ付けされたアセットに対して (用語 ID で) フィルタリングします:

aws glue search-assets \ --search-text "financial data" \ --filter-clause '{ "AttributeFilter": { "Attribute": "glossaryTerms", "Operator": "equals", "Value": {"StringValue": "glossary-term-id"} } }'
ネストされた AND フィルターと OR フィルターを使用するには

特定の用語集の用語を持つテーブルまたはスキルアセットを検索します:

aws glue search-assets \ --search-text "customer" \ --filter-clause '{ "AndAllFilters": [ {"OrAnyFilters": [ {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}, {"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}} ]}, {"AttributeFilter": {"Attribute": "glossaryTerms", "Operator": "equals", "Value": {"StringValue": "glossary-term-id"}}} ] }'

検索結果のソート

デフォルトでは、結果はセマンティック関連性でソートされます。属性でソートするには:

aws glue search-assets \ --search-text "customer purchases" \ --sort '{"Attribute": "assetName", "Order": "ASCENDING"}'
aws glue search-assets \ --search-text "customer purchases" \ --sort '{"Attribute": "updatedAt", "Order": "DESCENDING"}'
注記

ソート属性を指定すると、結果はセマンティック関連性ではなく、その属性によって順序付けられます。

検索結果のページ分割

結果が MaxResults を超えると、レスポンスには NextToken が含まれます。これを使用して、追加のページを取得します。

aws glue search-assets \ --search-text "customer data" \ --max-results 10 \ --next-token "eyJsYXN0RXZhbHVhdGVkS2V5Ijp7ImlkIjp7InMiOiJhMWIyYzNkNCJ9fX0="

レスポンスに NextToken が含まれなくなるまで続行します。

フィルターのみのクエリの実行

セマンティックランキングのないアセットを一覧表示するには、SearchText なしで FilterClause のみ使用します。

aws glue search-assets \ --filter-clause '{"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Table"}}}' \ --max-results 20
注記

SearchTextFilterClause の両方を省略すると、API はすべてのアセットを返します。

ドメインのスキルアセットを検出するには

売上データに関連するスキルアセットを検索します:

aws glue search-assets \ --search-text "sales domain usage rules" \ --filter-clause '{"AttributeFilter": {"Attribute": "type", "Operator": "equals", "Value": {"StringValue": "Skill"}}}'
注記

このクエリは、カスタムスキルアセットのみを返します。マネージドスキルは SearchAssets API によって返されません。

テキスト検索とソートを組み合わせるには

一致するアセットの包括的なビューを取得します:

aws glue search-assets \ --search-text "customer" \ --sort '{"Attribute": "updatedAt", "Order": "DESCENDING"}' \ --max-results 10