Appearance
タグの管理
cdm catalog tag サブコマンドは、カタログタグファイル(.ctag.yaml)を介して、タグの定義(名前・色・説明)をサーバと同期します。
cdm catalog tag <subcommand> [options]| サブコマンド | 機能概要 |
|---|---|
tag dump | サーバの状態から .ctag.yaml を生成 |
tag pull | ローカルファイルをサーバの最新状態に更新 |
tag diff | サーバへ反映した場合の差分を確認 |
tag push | ローカルの変更をサーバに反映 |
tag prune | 参照されていないタグをサーバから削除 |
tag format | ファイルのフォーマット |
tag validate | ファイルの検証 |
タグの一覧取得(tag list)は カタログの検索 を参照してください。
タグファイルの生成
cdm catalog tag dump
-o, --output <path> 出力先(ファイルパス または ディレクトリ)
--stdout 標準出力に出力(--output と排他)
-y, --yes 既存ファイルがある場合の確認プロンプトをスキップ
--profile <name> 利用する profile を指定ワークスペースに登録されたタグから .ctag.yaml を生成します。
- システムタグ(
isSystemがtrueのタグ)は書き出しません(システムタグの扱い) - 登録されているタグが1件もない場合でも
tags: []でファイルを生成します - 閲覧権限を持つコネクションが1つ以上必要です
出力先
--outputで出力先を指定できます- ファイルパス(拡張子
.ctag.yaml)を指定した場合、そのパスに書き込みます - ディレクトリを指定した場合、ディレクトリ内に
.ctag.yamlを生成します(ファイル名は自動生成されます) - 書き込み先に既存のファイルがある場合、確認プロンプトが表示されます
--yesを指定することで、確認をスキップできます
- ファイルパス(拡張子
--stdoutを指定した場合、生成結果を標準出力に出力します--output,--stdoutのいずれも指定のない場合は、--output ./として処理します
利用例
bash
# カレントディレクトリに自動命名で生成
cdm catalog tag dump
# 出力先ファイルを指定
cdm catalog tag dump -o tags/tags.ctag.yaml
# 標準出力
cdm catalog tag dump --stdout > tags/tags.ctag.yamlタグの最新化
cdm catalog tag pull <file|directory>
-y, --yes 確認プロンプトをスキップして反映
--profile <name> 利用する profile を指定サーバ上のタグ定義から最新の状態を取得して、ローカルの .ctag.yaml を更新します。
<file|directory>には、カタログタグファイル(.ctag.yaml)または ディレクトリを指定してください- ディレクトリを指定した場合は、配下の
.ctag.yamlを再帰的に対象とします
- ディレクトリを指定した場合は、配下の
- 更新対象はファイルに記載された
(type, name)のみです(更新時の挙動) - システムタグ(
isSystemがtrueのタグ)は書き出しません(システムタグの扱い) - 書き出し時に内部で
formatを実行するため、インデントやキーの並び順は整形され、既存のコメント・空行は保持されません - 変更がある場合、書き込み前に確認プロンプトが表示されます
--yesを指定することで、確認をスキップできます
- 閲覧権限を持つコネクションが1つ以上必要です
出力例
tags/tags.ctag.yaml changed (2 updated, 1 removed)
tags/column.ctag.yaml unchanged
2 files processed: 1 changed, 1 unchanged
? Pull these changes from the server? (y/N)利用例
bash
# 確認しつつ最新化
cdm catalog tag pull tags/
# CI 等で確認なしに最新化
cdm catalog tag pull tags/ --yesサーバとの差分確認
cdm catalog tag diff <file|directory>
-f, --format <fmt> 出力形式: text | json(既定: text)
--exit-code 差分がある場合に exit 2 を返す
--profile <name> 利用する profile を指定指定した .ctag.yaml をサーバに push した場合に発生する差分を出力します。
<file|directory>には、カタログタグファイル(.ctag.yaml)または ディレクトリを指定してください- ディレクトリを指定した場合は、配下の
.ctag.yamlを再帰的に対象とします
- ディレクトリを指定した場合は、配下の
- 差分の計算前に、内部で次の検査を行います
- 変更のあるタグのみを出力します
--exit-codeを指定した場合、差分がある場合はexit 2で終了します- 閲覧権限を持つコネクションが1つ以上必要です
出力例(text)
Summary: +1 created, 1 updated
Changes:
Name Type Field Before After
daily_batch table (new) - -
daily_batch table color (not set) #666CFF
daily_batch table description (not set) 日次バッチ
core table description 中核テーブル 分析の中核となるテーブル
pii column color #71767E #FF6767出力例(json)
json
{
"summary": { "create": 1, "update": 1, "hasChange": true },
"entries": [
{
"kind": "create",
"name": "daily_batch",
"type": "table",
"color": "#666CFF",
"description": "日次バッチ"
},
{
"kind": "update",
"name": "core",
"type": "table",
"description": { "before": "中核テーブル", "after": "分析の中核となるテーブル" }
}
]
}利用例
bash
# 差分確認
cdm catalog tag diff tags/tags.ctag.yaml
# 機械可読な差分
cdm catalog tag diff tags/ -f json
# CI で変更検知(変更があれば exit 2)
cdm catalog tag diff tags/ --exit-codeタグの反映
cdm catalog tag push <file|directory>
-y, --yes 確認プロンプトをスキップして反映
--profile <name> 利用する profile を指定指定した .ctag.yaml の内容を元にサーバ上のタグの作成・更新を行います。
<file|directory>には、カタログタグファイル(.ctag.yaml)または ディレクトリを指定してください- ディレクトリを指定した場合は、配下の
.ctag.yamlを再帰的に対象とします
- ディレクトリを指定した場合は、配下の
- ファイルに記載された
(type, name)を対象に、更新時の挙動に従って作成・更新します- サーバ上に存在しない
(type, name)は新規作成、存在する場合はcolor/descriptionを更新します - ファイルに記載のない
(type, name)には影響しません(削除・リネームは行いません。タグの削除はpruneを利用してください)
- サーバ上に存在しない
- 反映前に、内部で
validate相当の検査を行います- エラーが見つかった場合は
exit 1で終了します - 複数のファイルを対象とする場合、すべてのファイルを検査し終えてから、エラーをまとめて報告します
- エラーが見つかった場合は
- この処理によりサーバのタグが更新される場合、更新前に確認プロンプトが表示されます
--yesを指定することで、確認をスキップできます- 反映される差分を事前に確認したい場合は、別途
diffを実行してください
- 閲覧権限を持つコネクションが1つ以上と、カタログ用のタグ(
table/column)の編集権限が必要です
出力例
tags/tags.ctag.yaml changed (+1 created, 2 updated)
1 file processed: 1 changed
? Push these changes to the server? (y/N)利用例
bash
# 確認しつつ反映
cdm catalog tag push tags/tags.ctag.yaml
# 事前に差分を確認してから反映
cdm catalog tag diff tags/tags.ctag.yaml
cdm catalog tag push tags/tags.ctag.yaml
# CI 等で確認なしに反映
cdm catalog tag push tags/ --yesタグの削除
cdm catalog tag prune [file|directory]
--tag-id <id> 削除対象を特定のタグに限定(複数指定可)
--type <table|column> 削除対象を種別で絞り込み
--dry-run 削除は行わず、削除対象の一覧のみを表示
-f, --format <fmt> 出力形式: text | json(既定: text)。json は --dry-run 必須
-y, --yes 確認プロンプトをスキップして削除
--profile <name> 利用する profile を指定サーバ上のカタログで、どのテーブル・カラムにも付与されていない(参照されていない)タグを削除します。
pushがファイルの記載を対象に作成・更新するのに対し、pruneはサーバ上のカタログの付与状況を基準に削除対象を決めます(更新時の挙動)- 参照の有無は、閲覧権限を持たないコネクションのカタログからの付与も含めて判定します
- 判定基準(未参照であること)は共通で、以下の指定は削除対象の母集団を絞り込むフィルタとして働きます
- 引数なし: サーバ上のすべてのタグを対象とします(システムタグを除く)
<file|directory>: 指定した.ctag.yaml(ディレクトリ指定時は配下の.ctag.yaml)に定義されたタグに限定します--tag-id: 特定のタグに限定します。複数指定でき、cdm catalog tag listやpruneの出力に表示されるIdを指定します。未参照の一覧を確認した上で、特定のタグだけを削除したい場合に利用します--type: 種別(table/column)で絞り込みます。特定種別の削除権限のみを持つ場合などに利用します
- システムタグ(
isSystemがtrueのタグ)は削除対象になりません(システムタグの扱い) - 削除対象がある場合、削除前に対象の一覧を表示して確認プロンプトを表示します(
--yesでスキップ)。削除対象がない場合はその旨を表示してexit 0で終了します --dry-runを指定すると、削除を行わず削除対象の一覧のみを表示してexit 0で終了します(--yesとは排他)。削除前の確認や、CI で対象を取得する用途に利用できます--format jsonは--dry-run併用が必須です。--yesとも排他です- 閲覧権限を持つコネクションが1つ以上と、削除対象のタグ(
table/column)の削除権限が必要です
WARNING
prune は取り消しできない破壊的な操作です。今この時点で参照されていないタグを削除するため、将来利用する予定で用意したタグや、一時的にすべての付与を外しているタグも削除対象になります。実行前に、表示される削除対象の一覧を必ず確認してください。
出力例(text)
Id Name Type Color Description
69a1f0c2b34e5d6f7a8b9c01 old_campaign table #FDAD6D 2024 キャンペーン用
69a1f0c2b34e5d6f7a8b9c02 tmp_flag column #71767E ""
2 tags will be deleted.
? Delete these tags from the server? (y/N)- Description 列は切り捨てず折り返します。本文中の改行は
\nと表示します。空の description は""と表示します - 特定のタグだけを削除したい場合は、
--dry-runで未参照タグのIdを確認し、そのIdを--tag-idに渡してください
出力例(json)
bash
cdm catalog tag prune --dry-run -f jsonjson
{
"tags": [
{
"id": "69a1f0c2b34e5d6f7a8b9c01",
"name": "old_campaign",
"type": "table",
"color": "#FDAD6D",
"description": "2024 キャンペーン用"
}
]
}利用例
bash
# サーバ上の未参照タグをすべて掃除(確認あり)
cdm catalog tag prune
# 削除対象の確認のみ
cdm catalog tag prune --dry-run
# 削除対象の確認のみ(JSON形式)
cdm catalog tag prune --dry-run -f json
# 自分が管理するファイルのタグに限定して掃除
cdm catalog tag prune tags/
# 未参照の一覧を確認した上で、特定のタグだけ削除
cdm catalog tag prune --tag-id 69a1f0c2b34e5d6f7a8b9c01
# カラム用タグのみを対象に掃除(column の削除権限のみを持つ場合など)
cdm catalog tag prune --type column
# CI 等で確認なしに削除
cdm catalog tag prune tags/ --yesファイルのフォーマット
cdm catalog tag format <file|directory>
--check 整形が必要かの確認のみ行い、ファイルは変更しない
--profile <name> 利用する profile を指定.ctag.yaml をローカルで整形します。
<file|directory>には、カタログタグファイル(.ctag.yaml)または ディレクトリを指定してください- ディレクトリを指定した場合は、配下の
.ctag.yamlを再帰的に対象とします
- ディレクトリを指定した場合は、配下の
- 次の処理を行います
validate相当の書式検査を行いますtagsをtype・nameの順でソートします- インデントやキーの並び順などを整えます
- コメント・空行は保持されません(削除されます)
--checkを指定した場合、整形が必要かどうかのみを判定し、ファイルは変更しません。整形が必要な場合はexit 1で終了するため、CI での検査に利用できます
利用例
bash
# 整形
cdm catalog tag format tags/
# CI で整形済みか確認(未整形なら exit 1)
cdm catalog tag format tags/ --checkファイルの検証
cdm catalog tag validate <file|directory>
--profile <name> 利用する profile を指定.ctag.yaml の書式をローカルで検証します。
<file|directory>には、カタログタグファイル(.ctag.yaml)または ディレクトリを指定してください- ディレクトリを指定した場合は、配下の
.ctag.yamlを再帰的に対象とします
- ディレクトリを指定した場合は、配下の
- 次の観点を検査します
- 有効な YAML 形式か
- 必須フィールド(
name/type/color/description)が欠落していないか typeがtable/columnのいずれかかcolorがTagColor型のいずれかの値か(type, name)に重複がないか(複数ファイル・ディレクトリを対象とした場合はファイルをまたいで検査します)
- 検証エラーがある場合は
exit 1で終了します
利用例
bash
# 書式を検証
cdm catalog tag validate tags/