AWS Glue Data Catalog のセマンティック検索
注記
ビジネスコンテキストとセマンティック検索は AWS Glue のプレビューであり、変更される可能性があります。
セマンティック検索を使用すると、キーワードの完全一致に加えて、意味によってデータアセットを検出できます。結果は、クエリとのセマンティック類似性によってランク付けされます。アセットタイプ、メタデータフィールド、用語集の用語のフィルターを使用して結果を絞り込むことができます。
SearchAssets API の使用
SearchAssets API は、SearchText、FilterClause、またはその両方を受け入れます。どちらも指定しない場合、すべてのアセットが返されます。任意指定のパラメータ: Sort、MaxResults、NextToken。
テキスト検索
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 – 演算子:
equals、greaterThan、greaterThanOrEquals、lessThan、lessThanOrEquals、notExists。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
注記
SearchText と FilterClause の両方を省略すると、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