ストリームカタログ¶
転送中のデータが持つ価値を引き出し、組織全体の生産性を高めるうえでカギとなるのが、セルフサービス型でデータ探索を行うためのツールです。
ストリームカタログは、Cloud Console と API の両方で使用できます。ストリームカタログを活用することで、さまざまなチームのユーザーが、プロジェクトを迅速かつ効率的に進めるために必要なデータの共有、発見、理解ができるように設計された、一元的な整理されたライブラリを使用して、連携することができます。これは転送中のデータのデジタル ライブラリのようなもので、Kafka の経験の多寡にかかわらずすべてのユーザーが、必要なものを検索し、構築済みのものを見つけ、即座に活用できるようになります。
分類が可能になっており、各チームはコンテキストに関する詳細情報をデータに追加して、ビジネスのストリームカタログの値を増やしていくことができます。たとえば、スキーマフィールドに "PII"(個人を特定できる情報)や "Sensitive"(機微情報)などのラベルを付加できます。
データとスキーマの検索¶
Confluent Cloud のストリームカタログは、スキーマ関連のすべてのメタデータを一元管理し、グローバル検索バーから検出できるようにします。特にスキーマに関しては、以下の項目を検索できます。
- スキーマサブジェクト名
- スキーマレコード名
- スキーマフィールド名
- Tag name (see also, データとスキーマのタグ付け and Search for entities with a given tag)
グローバル検索¶
To try it out, log into Confluent Cloud in an environment where you have Schema Registry enabled, and start typing the name of a schema subject, data record, data field, or tag into the search bar at the top. You will get results as you type. Hit enter to select an entity.
Note that you will get hits from other entities, such as topics, on the same search. Entity names that include the word you type also show
(for example, the tag my_stocks
is shown when you search for stocks
).

検索結果をクリックして、そのエンティティに移動します。以下に例を示します。
- 検索結果の Schema の下に サブジェクト の 1 つとして表示されている
stocks-value
をクリックし、stocks
トピックの価格のスキーマに移動します。 - 検索結果の Topic の下に表示されている
stocks
をクリックし、stocks
Kafka トピックに移動します。
同じ名前のエンティティ(スキーマ以外)が複数のクラスターに存在する場合は、すべてが関連クラスターと一緒に表示されます。

スキーマサブジェクトは、環境ごとの スキーマレジストリ クラスター内の、環境レベルで存在します。同じ名前のスキーマサブジェクトが複数の環境に存在する場合は、すべてが関連する環境と一緒に表示されます。

フィルターを使用した検索¶
See all.. をクリックするか、最初の検索結果で Enter キーを押すと、詳細なリストが、フィルターを適用するためのオプションとともに表示されます。
このビューは、stocks
を検索したすべての結果("All Results")です。

左側のメニューでエンティティを選択すると、検索結果を絞り込むことができます。たとえば、"Schemas" を選択してみます。

また、上部にあるフィルターを使って、環境、タグ、エンティティごとに絞り込むこともできます。
この例では、エンティティの種類をもとに検索結果を絞り込み、名前に stocks
を含むスキーマサブジェクトのみを表示しています。

この例では、デモ環境のスキーマサブジェクト、レコード、フィールドで my_stocks
というタグが付加されたものを絞り込んでいます。

この詳細リストビューで検索条件を変更して、選択したエンティティタイプで他の名前を検索することもできます。たとえば、クイックスタートのステップを実行して employees
トピックの スキーマを作成 した場合は、スキーマで employees
を検索できます。(employees スキーマと一致しないタグなど、他のフィルターはすべてクリアしておく必要があります。)

データとスキーマのタグ付け¶
ストリームカタログの機能では、エンティティのタグ付けができます。他のエンティティと同様にタグも検索できます。
ガバナンスの根本的な側面として、複数のコンセプトやカテゴリなど、共通の語彙に基づいてデータを整理できる機能があります。Confluent Cloud に、スキーマと、データレコードやフィールドなどのきめ細かいエンティティに、タグを作成して適用するオプションが追加されました。このバージョンの Confluent Cloud では、以下を実行できます。
- 提供されるタグ(Public、Private、Sensitive、PII)とカスタム("自由形式")タグのインスタンスの作成
- タグとスキーマバージョン、レコード、フィールドとの関連付け
- 1 つのフィールド、レコード、またはスキーマバージョンへの複数のタグの適用
タグの作成¶
タグを作成するには、以下の手順に従います。
選択した環境の設定の Schema Registry タブに移動します。
View & manage tags をクリックします。
Create tag をクリックし、free-form または commonly used tags を選択します。
- commonly used tags を選択した場合は、作成するタグを 1 つ以上選択します。(PII(個人を特定できる情報)、Sensitive、Private、Public)
- free-form を選択した場合はタグ名と説明(省略可能)を入力します。タグ名は、アルファベットで始めて、その後に英字、数字、アンダースコアを含めることができます。
名前と説明が適切に入力されると、Create ボタンがアクティブになります。Create をクリックして、現在の名前と説明のタグを作成します。
使用可能なタグを表示します。
作成されたタグは、Tag management の下のリストに表示されます。
タグの適用¶
タグを適用するには、以下の手順に従います。
タグを適用するスキーマ、データレコード、またはデータフィールドに移動します。
これを行うには複数の方法があります。
- 検索バーで、タグを適用するスキーマ、レコード、フィールド、またはトピックの名前を入力します。
- 同じ環境レベルビューの Schema Registry タブで View and manage schemas をクリックし、リスト内のスキーマを選択します。
- クラスター内で、トピックに移動し、そのトピックの Schema タブをクリックします。
トピックの Schemas タブで、以下のようにタグを追加できます。
- 選択したスキーマバージョン全体にタグを追加するには、右側のパネルで Add tags to this version を選択し、利用可能なタグのドロップダウンリストからタグを選択します。
- 選択したレコードまたはフィールドにタグを追加するには、スキーマのツリービュー(デフォルトビュー)を展開します。エンティティの横のプラスアイコン
をクリックし、利用可能なタグのドロップダウンリストからタグを選択します。
適用されたタグを表示します。
適用されたタグは、それが関連付けられているスキーマバージョン、レコード、フィールドの横に表示されます。
スキーマバージョンまたはデータフィールドからのタグの削除¶
以前適用したタグをエンティティから削除するには、以下の手順に従います。
- タグを含むスキーマに移動します。
- 適用されているタグの x をクリックします。
タグの編集¶
タグの説明を編集するには、以下の手順に従います。
- 選択した環境の設定の Schema Registry タブに移動します。
- View & manage tags をクリックします。
- Tag management リストから編集するタグを選択します。
- 説明の横の編集アイコンをクリックし、Save をクリックします。
ちなみに
既存のタグの名前は編集できません。説明のみ編集できます。タグの名前を変更するには、タグが適用されているすべてのエンティティからタグを削除し、タグ自体を削除した後、新しいタグを作成します。
タグの削除¶
タグを削除する場合は、まずタグが適用されているエンティティがないことを確認します。タグを使用している場合は、削除操作はエラーになります。
環境からタグを削除するには、以下の手順に従います。
- 選択した環境の設定の Schema Registry タブに移動します。
- View & manage tags をクリックします。
- Tag management リストから削除するタグを選択します。
- 右上にあるごみ箱アイコンをクリックします。
- タグが使用中(1 つ以上のエンティティに適用されている)の場合は、警告が表示され、タグは削除されません。
- タグを使用していない場合は、削除されます。
Search for entities with a given tag¶
As shown in データとスキーマの検索, tags are now discoverable through the global search.
This means that you can search for a tag name (or part of the tag name), and the search will return all entities that have that tag applied. From there, you can drill down into the resource as with any other search.
For example, searching on stocks
returns the my_stocks
and buy_stocks
tags in the results.

Click one of these, to get a list of all entities tagged accordingly.
For example, click my_stocks
under Tag in the results to get a list of all entities tagged with my_stocks
.

Click an entity to drill down. For example, click StockTrade
to drill down into the schema that has a field tagged with my_stocks
ちなみに
You must switch to the tree view of the schema to see record and field level tags. The raw schema view, which is the default, does not show them.
The tree and raw schema view buttons are on the top left next to the schema search field, as highlighted in the illustration below.

Here is another example showing a more specific search for entities tagged PII
(personally identifiable information).

A search for the tag PII
provides these search results.

Drill down on balance
, which is a tagged field in the account-value
schema.
(Remember to switch to the tree view to see the record and field level tags.)

Catalog API のドキュメント¶
ストリームカタログの API を使用して、カタログのエンティティの作成、取得、更新、削除ができます。詳細については、Confluent Cloud Catalog API(V1) を参照してください。
注釈
Catalog API では、スキーマのエンティティの種類(サブジェクト、レコード、フィールド)についてのみ検索機能が用意されています。Cloud Console のグローバル検索ではすべてのエンティティの種類を検索できますが、現時点では、この API には他のエンティティの種類(トピック、コネクターなど)の検索機能は含まれていません。
Catalog API の使用例¶
このセクションでは、curl コマンドを使用して Confluent Cloud Catalog API(V1) を呼び出す例を紹介しています。
API のテストを行う場合、curl の --silent
フラグに jq を組み合わせてみてください。指定したコマンドから、きれいに書式設定された出力結果が得られます。以下の例では、これらのオプションを含めた呼び出しと、想定される出力を示します。
疑問符(?
)またはアンパサンド(&
)を含む検索の呼び出しで適切に書式が設定された出力を得るには、これらがシェルで解釈されないように、URL と検索パラメーターを一重引用符または二重引用符で囲む必要があります。この構文についても、例の中に示されています。
--silent
と jq
を使用しない場合、出力の内容は同じになりますが、書式は適用されません。
ストリーム系列のチュートリアル の stocks の例を既に試している場合は、以下の例にあるエンティティのほとんどが既に環境内に存在しています。これらのリソースをより見つけやすくするには、スキーマ、レコード、フィールドにタグ付け し、そのタグを、以下に示すように検索に使用します。
セットアップ¶
Catalog API に対する API 呼び出しには、以下が必要になります。
- 使用する環境内の スキーマレジストリ クラスター用の API エンドポイントの URL。以下の例では、
<SCHEMA-REGISTRY-URL>
となっています。この URL を Cloud Console で確認するには、使用する環境の Schema Registry タブに移動するか、使用する環境に移動してccloud ccloud schema-registry cluster describe
と入力して Confluent Cloud のコマンドラインにログオンします。(こちら に便利な CLI コマンドリストがあります。) - 使用する環境内の スキーマレジストリ 用の API キーとシークレット。(必要に応じて「Confluent Cloud スキーマレジストリ の API キーを作成する」を参照してください。)スキーマサブジェクトは、環境ごとの スキーマレジストリ クラスター内の環境レベルで存在します。そのため、使用する Kafka クラスターが含まれている環境を選択します。以下の例では、この部分は <API-KEY>:<API-SECRET> となっています。このように、curl コマンドではコロン区切りのペアとして入力します。
タグの定義の作成¶
curl -u <API-KEY>:<API-SECRET> \
--header 'Content-Type: application/json' \
--data '[ { "entityTypes" : [ "sr_schema", "sr_record", "sr_field", "sr_subject_version" ],"name" : "<TAG_NAME>","description" : "Test API call"} ]' \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs
たとえば、よく使用されるプレハブタグの 1 つ(PII、Sensitive、Private、Public)を作成するには、API 呼び出しでタグ名を指定します。次のコマンドを使用すると、PII タグが作成されます。
curl -u <API-KEY>:<API-SECRET> \
--header 'Content-Type: application/json' \
--data '[ { "entityTypes" : [ "sr_schema", "sr_record", "sr_field", "sr_subject_version" ],"name" : "PII","description" : "Personally Identifiable Information"} ]' \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs
購入リストに在庫のシンボルのタグを付加できるように、PCI
というカスタムタグを作成するには、curl --silent
を使用し、パイプで jq
に渡します。
curl --silent -u <API-KEY>:<API-SECRET> \
--header 'Content-Type: application/json' \
--data '[ { "entityTypes" : [ "sr_schema", "sr_record", "sr_field", "sr_subject_version" ],"name" : "PCI","description" : "Payment Card Industry Data Security Standard"} ]' \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs | jq .
出力は以下のようになります。
"category": "CLASSIFICATION",
"createdBy": "root",
"updatedBy": "root",
"createTime": 1631914851910,
"updateTime": 1631914851910,
"version": 1,
"name": "PCI",
"description": "Payment Card Industry Data Security Standard",
"typeVersion": "1.0",
"attributeDefs": [],
"superTypes": [],
"entityTypes": [
"sr_field",
"sr_schema",
"sr_record"
"sr_subject_version"
]
購入リストに在庫のシンボルのタグを付加できるように、stocks_buy
というカスタムタグを作成するには、curl --silent
を使用し、パイプで jq
に渡します。
curl --silent -u <API-KEY>:<API-SECRET> \
--header 'Content-Type: application/json' \
--data '[ { "entityTypes" : [ "sr_schema", "sr_record", "sr_field", "sr_subject_version" ],"name" : "stocks_buy","description" : "stock symbols on buy list"} ]' \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs | jq .
出力は以下のようになります。
"category": "CLASSIFICATION",
"createdBy": "root",
"updatedBy": "root",
"createTime": 1631914483922,
"updateTime": 1631914483922,
"version": 1,
"name": "stocks_buy",
"description": "stock symbols on buy list",
"typeVersion": "1.0",
"attributeDefs": [],
"superTypes": [],
"entityTypes": [
"sr_field",
"sr_schema",
"sr_record"
"sr_subject_version"
]
もう 1 つ、my_stocks
というカスタムタグを作成します。
curl --silent -u <API-KEY>:<API-SECRET> \
--header 'Content-Type: application/json' \
--data '[ { "entityTypes" : [ "sr_schema", "sr_record", "sr_field", "sr_subject_version" ],"name" : "my_stocks","description" : "stocks I am tracking"} ]' \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs | jq .
https://confluent.cloud にログオンし、Cloud Console をチェックして、新しいタグが表示されることを確認します。作業対象の環境に移動して、Schema Registry タブをクリックし、下にスクロールして Tags を見つけます。

View and manage tags をクリックすると、すべてのタグが表示されます。

属性(キー、値ペア)を追加して、タグの定義を更新します。¶
次の呼び出しにより、いくつかの新しい属性で PCI
タグが更新されます。
curl --silent -u <API-KEY>:<API-SECRET> --request PUT \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs \
--header 'Content-Type: application/json' \
--data '[{ "entityTypes" : [ "sr_record", "sr_field" ],
"name" : "PCI", "description" : "Payment Card Industry Data Security Standard" ,
"attributeDefs" : [ { "name" : "key", "cardinality" : "SINGLE", "typeName" : "string" },
{ "name" : "region", "isOptional" : "true", "cardinality" : "SINGLE", "typeName" : "string" },
{ "name" : "keytype", "isOptional" : "true", "cardinality" : "SINGLE", "typeName" : "string" } ] }]' | jq .
出力は以下のようになります。
"category": "CLASSIFICATION",
"name": "PCI",
"description": "Payment Card Industry Data Security Standard",
"attributeDefs": [
{
"name": "key",
"typeName": "string",
"isOptional": false,
"cardinality": "SINGLE",
"valuesMinCount": -1,
"valuesMaxCount": -1,
"isUnique": false,
"isIndexable": false,
"includeInNotification": false,
"searchWeight": -1
},
{
"name": "region",
"typeName": "string",
"isOptional": true,
"cardinality": "SINGLE",
"valuesMinCount": -1,
"valuesMaxCount": -1,
"isUnique": false,
"isIndexable": false,
"includeInNotification": false,
"searchWeight": -1
},
{
"name": "keytype",
"typeName": "string",
"isOptional": true,
"cardinality": "SINGLE",
"valuesMinCount": -1,
"valuesMaxCount": -1,
"isUnique": false,
"isIndexable": false,
"includeInNotification": false,
"searchWeight": -1
}
],
"superTypes": [],
"entityTypes": [
"sr_field",
"sr_record"
]
タグの定義の一覧表示¶
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs | jq .
出力は以下のようになります。
"category": "CLASSIFICATION",
"guid": "f94803c3-6aba-4b41-a003-2f8fc1957c29",
"createdBy": "root",
"updatedBy": "root",
"createTime": 1631593629096,
"updateTime": 1631593629096,
"version": 1,
"name": "PII",
"description": "Personally identifiable information",
"typeVersion": "1.0",
"attributeDefs": [],
"superTypes": [],
"entityTypes": [
"cf_entity"
]
},
{
"category": "CLASSIFICATION",
"createdBy": "root",
"updatedBy": "root",
"createTime": 1631914851910,
"updateTime": 1631914851910,
"version": 1,
"name": "PCI",
"description": "Payment Card Industry Data Security Standard",
"typeVersion": "1.0",
"attributeDefs": [],
"superTypes": [],
"entityTypes": [
"sr_field",
"sr_schema",
"sr_record",
"sr_subject_version"
]
},
{
"category": "CLASSIFICATION",
"createdBy": "root",
"updatedBy": "root",
"createTime": 1631914483920,
"updateTime": 1631914483920,
"version": 1,
"name": "stocks_buy",
"description": "stock symbols on buy list",
"typeVersion": "1.0",
"attributeDefs": [],
"superTypes": [],
"entityTypes": [
"sr_field",
"sr_schema",
"sr_record",
"sr_subject_version"
]
},
...
タグの定義の取得¶
PII(個人を特定できる情報)タグの定義を取得します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs/PII | jq .
出力は以下のようになります。
"category": "CLASSIFICATION",
"createdBy": "root",
"updatedBy": "root",
"createTime": 1631593629105,
"updateTime": 1631593629105,
"version": 1,
"name": "PII",
"description": "Personally identifiable information",
"typeVersion": "1.0",
"attributeDefs": [],
"superTypes": [],
"entityTypes": [
"cf_entity"
]
名前によるフィールドの検索¶
credit_card
という名前のフィールドを検索します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url '<SCHEMA-REGISTRY-URL>/catalog/v1/search/basic?type=sr_field&query=credit_card' | jq .
出力は以下のようになります。
"searchParameters": {
"includeDeleted": false,
"limit": 0,
"offset": 0
},
"types": [
"sr_field"
],
"entities": [
{
"typeName": "sr_field",
"attributes": {
"createTime": 1632516635687,
"qualifiedName": "lsrc-g2p81:.:100007:com.mycorp.mynamespace.sampleRecord.credit_card",
"name": "credit_card",
"context": ".",
"id": 100007,
"nameLower": "credit_card",
"tenant": "lsrc-g2p81"
},
"guid": "541fae87-7fe5-4cab-b509-0f76cbf47515",
"status": "ACTIVE",
"displayText": "credit_card",
"classificationNames": [
"credit_card",
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": [
タグによるフィールドの検索¶
PII
というタグの付いたフィールドを検索します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url '<SCHEMA-REGISTRY-URL>/catalog/v1/search/basic?type=sr_field&tag=PII' | jq .
出力は以下のようになります。
"searchParameters": {
"includeDeleted": false,
"limit": 0,
"offset": 0
},
"types": [
"sr_field"
],
"entities": [
{
"typeName": "sr_field",
"attributes": {
"createTime": 1614710010055,
"qualifiedName": "lsrc-g2p81:.:100001:ksql.StockTrade.userid",
"name": "userid",
"context": ".",
"id": 100001,
"nameLower": "userid",
"tenant": "lsrc-g2p81"
},
"guid": "99a87d47-f55c-4cff-ad36-cf870ebab382",
"status": "ACTIVE",
"displayText": "userid",
"classificationNames": [
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1614710010055,
"qualifiedName": "lsrc-g2p81:.:100001:ksql.StockTrade.account",
"name": "account",
"context": ".",
"id": 100001,
"nameLower": "account",
"tenant": "lsrc-g2p81"
},
"guid": "e8b96055-30ef-4203-adbc-30e28fa419c9",
"status": "ACTIVE",
"displayText": "account",
"classificationNames": [
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1614902469162,
"qualifiedName": "lsrc-g2p81:.:100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.ACCOUNT",
"name": "ACCOUNT",
"context": ".",
"id": 100003,
"nameLower": "account",
"tenant": "lsrc-g2p81"
},
"guid": "152e502a-98ac-484b-86ef-b789d9eb8bf7",
"status": "ACTIVE",
"displayText": "ACCOUNT",
"classificationNames": [
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1627756849389,
"qualifiedName": "lsrc-g2p81:.:100004:Example.Employee.Name",
"name": "Name",
"context": ".",
"id": 100004,
"nameLower": "name",
"tenant": "lsrc-g2p81"
},
"guid": "93673886-cea1-4f8d-ad2b-3e4574e70ee1",
"status": "ACTIVE",
"displayText": "Name",
"classificationNames": [
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1627756849389,
"qualifiedName": "lsrc-g2p81:.:100004:Example.Employee.Age",
"name": "Age",
"context": ".",
"id": 100004,
"nameLower": "age",
"tenant": "lsrc-g2p81"
},
"guid": "5a94a4dd-e930-46d2-b548-82f91f55f38a",
"status": "ACTIVE",
"displayText": "Age",
"classificationNames": [
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1632516635687,
"qualifiedName": "lsrc-g2p81:.:100007:com.mycorp.mynamespace.sampleRecord.balance",
"name": "balance",
"context": ".",
"id": 100007,
"nameLower": "balance",
"tenant": "lsrc-g2p81"
},
"guid": "b5652a8c-4509-4477-a45f-8dc7a504707c",
"status": "ACTIVE",
"displayText": "balance",
"classificationNames": [
"credit_card",
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1632516635687,
"qualifiedName": "lsrc-g2p81:.:100007:com.mycorp.mynamespace.sampleRecord.last_name",
"name": "last_name",
"context": ".",
"id": 100007,
"nameLower": "last_name",
"tenant": "lsrc-g2p81"
},
"guid": "175a6542-5af9-43f1-a9c6-a83491db94d9",
"status": "ACTIVE",
"displayText": "last_name",
"classificationNames": [
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1632516635687,
"qualifiedName": "lsrc-g2p81:.:100007:com.mycorp.mynamespace.sampleRecord.credit_card",
"name": "credit_card",
"context": ".",
"id": 100007,
"nameLower": "credit_card",
"tenant": "lsrc-g2p81"
},
"guid": "541fae87-7fe5-4cab-b509-0f76cbf47515",
"status": "ACTIVE",
"displayText": "credit_card",
"classificationNames": [
"credit_card",
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1632516635687,
"qualifiedName": "lsrc-g2p81:.:100007:com.mycorp.mynamespace.sampleRecord.first_name",
"name": "first_name",
"context": ".",
"id": 100007,
"nameLower": "first_name",
"tenant": "lsrc-g2p81"
},
"guid": "ddc35b11-056e-4a41-8a5b-69d2366e6455",
"status": "ACTIVE",
"displayText": "first_name",
"classificationNames": [
"PII"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
名前によるスキーマレコードの検索¶
名前空間 ksql
で StockTrade
というレコード名を持つスキーマレコードを検索します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url '<SCHEMA-REGISTRY-URL>/catalog/v1/search/basic?type=sr_record&query=ksql.StockTrade' | jq .
出力は以下のようになります。
"searchParameters": {
"includeDeleted": false,
"limit": 0,
"offset": 0
},
"types": [
"sr_record"
],
"entities": [
{
"typeName": "sr_record",
"attributes": {
"createTime": 1614710010055,
"qualifiedName": "lsrc-g2p81:.:100001:ksql.StockTrade",
"name": "StockTrade",
"context": ".",
"id": 100001,
"nameLower": "stocktrade",
"tenant": "lsrc-g2p81"
},
"guid": "d757148e-28f6-465b-b7de-088732848ab5",
"status": "ACTIVE",
"displayText": "StockTrade",
"classificationNames": [
"my_stocks",
"Sensitive"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
タグによるスキーマの検索¶
my_stocks
というタグが付いたスキーマレコードを検索します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url '<SCHEMA-REGISTRY-URL>/catalog/v1/search/basic?type=sr_record&tag=my_stocks' | jq .
出力は以下のようになります。
"searchParameters": {
"includeDeleted": false,
"limit": 0,
"offset": 0
},
"types": [
"sr_record"
],
"entities": [
{
"typeName": "sr_record",
"attributes": {
"createTime": 1614902469162,
"qualifiedName": "lsrc-g2p81:.:100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema",
"name": "KsqlDataSourceSchema",
"context": ".",
"id": 100003,
"nameLower": "ksqldatasourceschema",
"tenant": "lsrc-g2p81"
},
"guid": "dee2acf2-08e5-43af-a2de-927a06f17c33",
"status": "ACTIVE",
"displayText": "KsqlDataSourceSchema",
"classificationNames": [
"my_stocks"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_record",
"attributes": {
"createTime": 1614710010055,
"qualifiedName": "lsrc-g2p81:.:100001:ksql.StockTrade",
"name": "StockTrade",
"context": ".",
"id": 100001,
"nameLower": "stocktrade",
"tenant": "lsrc-g2p81"
},
"guid": "d757148e-28f6-465b-b7de-088732848ab5",
"status": "ACTIVE",
"displayText": "StockTrade",
"classificationNames": [
"my_stocks",
"Sensitive"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
Avro でのフィールドへのタグの付加¶
stocks_buy-value
スキーマを更新して、1 つのレコードのフィールドにタグを付加する必要があるとします。具体的には、stocks_buy-value
スキーマにレコード KsqlDataSourceSchema
が含まれていて、SYMBOL フィールドに stocks_buy
タグを付加する必要があります。
"entityName"
の指定に必要になるため、まず、タグを付加するフィールドの完全修飾名を取得する必要があります。これは、Cloud Console からは取得できません。スキーマのフィールドの完全修飾名を取得するには、フィールドの詳細情報を返す API 呼び出しを送信します。
たとえば、SYMBOL
という名前のフィールドを検索します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url '<SCHEMA-REGISTRY-URL>/catalog/v1/search/basic?type=sr_field&query=SYMBOL' | jq .
このコマンドの出力は次のようになります。stocks_buy-value
スキーマの KsqlDataSourceSchema
レコードの SYMBOL フィールドの完全修飾名が強調表示されています。
"searchParameters": {
"includeDeleted": false,
"limit": 0,
"offset": 0
},
"types": [
"sr_field"
],
"entities": [
{
"typeName": "sr_field",
"attributes": {
"createTime": 1614710010055,
"qualifiedName": "lsrc-g2p81:.:100001:ksql.StockTrade.symbol",
"name": "symbol",
"context": ".",
"id": 100001,
"nameLower": "symbol",
"tenant": "lsrc-g2p81"
},
"guid": "446a0d3f-b77e-4ce5-a0d2-628076cd4a13",
"status": "ACTIVE",
"displayText": "symbol",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1614902466440,
"qualifiedName": "lsrc-g2p81:.:100002:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.SYMBOL",
"name": "SYMBOL",
"context": ".",
"id": 100002,
"nameLower": "symbol",
"tenant": "lsrc-g2p81"
},
"guid": "8cfacbc2-8ae8-44c0-b860-e3161bdb012a",
"status": "ACTIVE",
"displayText": "SYMBOL",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_field",
"attributes": {
"createTime": 1614902469162,
"qualifiedName": "lsrc-g2p81:.:100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.SYMBOL",
"name": "SYMBOL",
"context": ".",
"id": 100003,
"nameLower": "symbol",
"tenant": "lsrc-g2p81"
},
"guid": "16854b0c-580b-408a-9cb6-49e5505900cc",
"status": "ACTIVE",
"displayText": "SYMBOL",
"classificationNames": [
"stocks_buy"
],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
ここで、SYMBOL フィールドに stocks_buy
タグを付加します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request POST \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/entity/tags \
--header 'Content-Type: application/json' \
--data '[ { "entityType" : "sr_field",
"entityName" : "lsrc-g2p81:.:100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.SYMBOL",
"typeName" : "stocks_buy"} ]' | jq .
出力は以下のようになります。
"typeName": "stocks_buy",
"entityStatus": "ACTIVE",
"entityType": "sr_field",
"entityName": "lsrc-g2p81:.:100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.SYMBOL"
Cloud Console で確認するには、https://confluent.cloud にログオンし、タグを付加したスキーマおよびフィールドに移動します。SYMBOL フィールドに stocks_buy
タグが関連付けられたことを確認できます。

Cloud Console または API を使用して、同じフィールドにもう 1 つのタグ my_stocks
を追加します。API 呼び出しを使用する場合は、前述のように curl コマンドを送信します。ただし、stocks_buy
を my_stocks
に置き換えます。
フィールドからのタグの属性の取得¶
同じフィールド(stocks_buy-value
スキーマの KsqlDataSourceSchema
レコードの SYMBOL)のタグ属性を取得します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url '<SCHEMA-REGISTRY-URL>/catalog/v1/entity/type/sr_field/name/100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.SYMBOL/tags' | jq .
出力は以下のようになります。
"typeName": "my_stocks",
"entityGuid": "cf62db9b-caec-40dd-928d-6dd98f803b4e",
"entityStatus": "ACTIVE",
"propagate": true,
"removePropagationsOnEntityDelete": false,
"entityType": "sr_field",
"entityName": "lsrc-g2p81:.:100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.SYMBOL"
},
{
"typeName": "stocks_buy",
"entityGuid": "cf62db9b-caec-40dd-928d-6dd98f803b4e",
"entityStatus": "ACTIVE",
"propagate": true,
"removePropagationsOnEntityDelete": false,
"entityType": "sr_field",
"entityName": "lsrc-g2p81:.:100003:io.confluent.ksql.avro_schemas.KsqlDataSourceSchema.SYMBOL"
スキーマのバージョンのタグ付け¶
まず、favorites
という新しいカスタムタグを作成します。
curl --silent -u <API-KEY>:<API-SECRET> \
--header 'Content-Type: application/json' \
--data '[ { "entityTypes" : [ "sr_schema", "sr_record", "sr_field", "sr_subject_version" ],"name" : "favorites","description" : "my favorite stocks"} ]' \
--url <SCHEMA-REGISTRY-URL>/catalog/v1/types/tagdefs' | jq .
出力は以下のようになります。
"category": "CLASSIFICATION",
"createdBy": "root",
"updatedBy": "root",
"createTime": 1632974329626,
"updateTime": 1632974329626,
"version": 1,
"name": "favorites",
"description": "my favorite stocks",
"typeVersion": "1.0",
"attributeDefs": [],
"superTypes": [],
"entityTypes": [
"sr_field",
"sr_schema",
"sr_record",
"sr_subject_version"
favorites
として操作してきた stocks_buy-value
スキーマの現在のスキーマバージョンにタグを付加します。次の例では、現在のバージョンが v2 であることが前提となっています。stocks_buy-value
のバージョンが v1 になっている場合は、API 呼び出しの v2
を v1
に置き換えます。
curl --silent -u <API-KEY>:<API-SECRET> \
--request POST \
--url <SCHEMA-REGISTRY-URL>/catalog/v2/entity/tags \
--header 'Content-Type: application/json' \
--data '[ { "entityType" : "sr_schema", "entityName" : "lsrc-g2p81:.:100003", "typeName" : "favorites" } ]' | jq .
出力は以下のようになります。
"typeName": "favorites",
"entityStatus": "ACTIVE",
"entityType": "sr_schema",
"entityName": "lsrc-g2p81:.:100003"
Cloud Console で stocks_buy-value
スキーマに移動し、タグを付加したバージョンに favorites
が関連付けられていることを確認します。

サブジェクトバージョンを指定したスキーマの取得¶
サブジェクト名のプレフィックスが stocks
になっている、バージョン 1 の値スキーマをすべて一覧表示します。
curl --silent -u <API-KEY>:<API-SECRET> \
--request GET \
--url 'https://<SCHEMA-REGISTRY-URL>/catalog/v1/search/attribute?type=sr_subject_version&attrName=name&attrValuePrefix=stocks' | jq .
出力は以下のようになります。
"searchParameters": {
"includeDeleted": false,
"limit": 0,
"offset": 0
},
"types": [
"sr_subject_version"
],
"entities": [
{
"typeName": "sr_subject_version",
"attributes": {
"createTime": 1614710010055,
"qualifiedName": "lsrc-g2p81:.:stocks-value:1",
"name": "stocks-value",
"context": ".",
"id": 100001,
"nameLower": "stocks-value",
"tenant": "lsrc-g2p81"
},
"guid": "ba600e7a-0093-41b3-8d68-38ba730323bc",
"status": "ACTIVE",
"displayText": "stocks-value",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_subject_version",
"attributes": {
"createTime": 1614902357913,
"qualifiedName": "lsrc-g2p81:.:stocks_under_100-value:1",
"name": "stocks_under_100-value",
"context": ".",
"id": 100002,
"nameLower": "stocks_under_100-value",
"tenant": "lsrc-g2p81"
},
"guid": "7e2e652b-3b53-4461-b634-c8a58186b28d",
"status": "ACTIVE",
"displayText": "stocks_under_100-value",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_subject_version",
"attributes": {
"createTime": 1614902369755,
"qualifiedName": "lsrc-g2p81:.:stocks_under_100-value:2",
"name": "stocks_under_100-value",
"context": ".",
"id": 100003,
"nameLower": "stocks_under_100-value",
"tenant": "lsrc-g2p81"
},
"guid": "799fde4c-a43b-4820-896c-e1f5fa2ba399",
"status": "ACTIVE",
"displayText": "stocks_under_100-value",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_subject_version",
"attributes": {
"createTime": 1614902422050,
"qualifiedName": "lsrc-g2p81:.:stocks_buy-value:2",
"name": "stocks_buy-value",
"context": ".",
"id": 100003,
"nameLower": "stocks_buy-value",
"tenant": "lsrc-g2p81"
},
"guid": "59f3ced1-a303-4712-ae7a-f720b9261084",
"status": "ACTIVE",
"displayText": "stocks_buy-value",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_subject_version",
"attributes": {
"createTime": 1614902418968,
"qualifiedName": "lsrc-g2p81:.:stocks_buy-value:1",
"name": "stocks_buy-value",
"context": ".",
"id": 100002,
"nameLower": "stocks_buy-value",
"tenant": "lsrc-g2p81"
},
"guid": "785f7f6f-5b7b-4695-bea7-d9b0a6df1947",
"status": "ACTIVE",
"displayText": "stocks_buy-value",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_subject_version",
"attributes": {
"createTime": 1614902469162,
"qualifiedName": "lsrc-g2p81:.:stocks_sell-value:2",
"name": "stocks_sell-value",
"context": ".",
"id": 100003,
"nameLower": "stocks_sell-value",
"tenant": "lsrc-g2p81"
},
"guid": "4abf45bd-46e9-4ec5-a959-e95a6010b166",
"status": "ACTIVE",
"displayText": "stocks_sell-value",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
},
{
"typeName": "sr_subject_version",
"attributes": {
"createTime": 1614902466440,
"qualifiedName": "lsrc-g2p81:.:stocks_sell-value:1",
"name": "stocks_sell-value",
"context": ".",
"id": 100002,
"nameLower": "stocks_sell-value",
"tenant": "lsrc-g2p81"
},
"guid": "bfea548e-a99f-48f1-b310-e99f25e908c4",
"status": "ACTIVE",
"displayText": "stocks_sell-value",
"classificationNames": [],
"meaningNames": [],
"meanings": [],
"isIncomplete": false,
"labels": []
}