
ThoughtSpot CS Toolsのbulkdeleterについてご紹介します
ThoughtSpot CS Toolsの概要のご紹介のページはこちらとなります。
ThoughtSpotのCS Toolsは以下の機能があります。今回はこのうち「bulkdeleter」についてご説明します。
- archiver ・・・ プラットフォーム内の古い回答とライブボードを管理する
- bulk-deleter ・・・ プラットフォームからメタデータオブジェクトを一括削除する
- bulk-sharing ・・・ ブラウザ内でテーブルおよび列レベルのセキュリティをスケーラブルに管理する
- extractor ・・・ ワークシート、ビュー、またはテーブルからデータを抽出する
- git ・・・ 開発者にとって使いやすい方法でvsc/git APIエンドポイントを使用する
- scriptability ・・・ ThoughtSpot環境間でTMLをメンテナンスする
- searchable ・・・ ThoughtSpotでThoughtSpotメタデータを探索する
- usermanagement ・・・ ユーザーを一括管理する(現在ユーザー削除と所有オブジェクトの移転のみが行えます)
CS Tools「bulkdeleter」とは?
bulkdeleterは一括で各オブジェクトを削除する機能です。
特定のタグがついているオブジェクトを削除したり、削除したいものを一覧表にし、そのリストを使って削除する方法、そして一番特徴的なのは、あるオブジェクトを含むものをすべて削除する(この場合、指定オブジェクト自体は削除しません)、という3つの方法を取ることが可能です。
また、指定オブジェクトが他のどのオブジェクトに含まれているか、というのを調べることができ、さらにその依存関係を出力することができるため、依存関係を簡単に調べることができるのは非常に便利です。
全体(機能問わず)で共通のオプション
以下は、各機能共通のオプションになります(すべての機能で有効になるわけではないのでご注意ください)。
--no-prompt:コマンド実行時に、ThoughtSpot側に影響がある場合、本当に実行するかどうかを聞かれる機能がありますが、このオプションを有効化すると問い合わせなく直ちに実行されます。このオプションを使う際はご注意ください(スケジュール実行するような場合はこのオプションを使うこともあるかと思います)。
--config:コマンドの対象となるThoughtSpotのクラスタの接続先の設定ファイルを指定します。ほぼすべてのコマンドで必須です。
--temp-dir:一時ファイルが作成されるフォルダを指定します
--verbose:「cs_tools logs report」で出力することのできるログファイルについて、このオプションを設定するとより詳しいログを得ることが可能になります。
bulkdeleterについて
bulkdeleterは、一括で各オブジェクトを削除するツールですが、Dry-Run(実際には実行しない)オプションは持っていません。その代わり実際に実行するかどうかプロンプトが出てくるためある程度の安全性は確保されています。--no-promptオプションを使ってしまうと、自動的に削除が実行されてしまうので気をつけましょう(自動化の際はこのオプションが使えると思います)。
削除オプションとしては三種類備えています。
- downstream ・・・ 指定したオブジェクトを「含む」検索結果、ライブボード、モデルなどをすべて削除します。指定したオブジェクト自体は削除しないことに注意してください。他のオブジェクトが含まれているライブボードもまるっと消されてしまうのでご注意ください。誤って意図しないものまで消しちゃわないようにしないといけないのでご注意ください。
- from-tag ・・・ 特定のタグがついているものをすべて削除します
- from-tabular ・・・ 表形式で削除するものを指定して削除します。誤って削除したりなど誤爆することは少なそうなオプションでしょうか・・・。
誤って削除しても復帰できるように、TMLをExportするオプションも持っています。「--directory」オプションを指定すると、指定場所にTMLがExportされます。この時、「--export-only」オプションを指定すると、削除は行われません。
「--syncer」オプションを指定すれば、対象となるオブジェクトのguidがリストとして残るのでおすすめです。これを使えば、あるテーブルを削除したい、といった時に、影響があるオブジェクトは何なのか?というのを洗い出すことが可能です。
downstreamオプション
指定したguidを含むすべてのオブジェクト(ただし、指定したguid自身は削除対象外)を削除する機能です。
オプション:
--guid(必須):削除すべきオブジェクトを洗い出すための大本のguidです。ここで指定したguidを含むライブボードなどあらゆるオブジェクトが削除対象となります(他のguidを含む、含まないに限りません)。
--org:実行時にOrgを切り替える場合、このオプションでOrgを指定することができます。
--syncer:Syncerを使えば、対象となるオブジェクトのリストを取得できます。「--export-only」オプションと組み合わせてまずはリストで確認するのをおすすめします。
--directory:TMLをエクスポートする先のフォルダを指定するオプションです。
--export-only:TMLをエクスポートするだけにするオプションです。このオプション指定時は削除は行われません。
その他、以下の共有オプションが利用可能です。
--no-prompt、--config(必須)、--temp-dir、--verbose
削除せずTMLをExportのみ行う場合のコマンドライン例:「--export-only」をオプションで指定すると、削除を行わず、TMLを出力だけし、オブジェクトの削除は行われません。
cs_tools tools bulk-deleter downstream --guid 60c1d1b8-9d19-41dc-9b24-8ea69d8b7c70 --syncer "csv://directory=.&delimiter=|" --directory c:\\temp --export-only --config mysetting
このオプション構成は、指定したguidを含むオブジェクトを抽出し、「c:\temp」フォルダにTMLを出力するというオプションです。ちなみに、指定したオブジェクトはViewです。このViewを含むオブジェクト(ライブボードや検索結果)が抽出される、ということになります。
上のオプションによる結果は以下のとおりです。

TMLをExportしたい時は、「--directory」は必須オプションです(指定しないと出力されません)。
TMLをExportしつつ削除する場合のコマンドライン例:
cs_tools tools bulk-deleter downstream --guid 60c1d1b8-9d19-41dc-9b24-8ea69d8b7c70 --syncer "csv://directory=.&delimiter=|" --directory c:\\temp --config mysetting
本来想定されている機能に近いオプションがこちらでしょうか。指定したguidを含むオブジェクトのTMLを「c:\temp」に保存し、プロンプトで「Y」が入力されると、該当のオブジェクトをすべて削除します。
ちなみに、ここでは、先程のViewを含んだテーブル自体を指定しています。
これを実行すると、以下のような画面になります。

「Comfirmation prompt」のカウントダウンが途中で行われますが、ここで「Y」を押すと削除が実行されます。ほうっておくとしばらく後に自動的に「n」となり削除せず終了します。
以下は、途中でYを押さなかった場合の結果ですが、削除せずに終了しています。

from-tagオプション
指定したタグを含むすべてのオブジェクトを削除する機能です(が、バグのため動作しません)。指定タグのみを削除することもできます(この場合、タグだけ削除でオブジェクトの削除は行われません)。
オプション:
--tag:対象となるタグを指定します(必須)。
--tag-only:タグ自体を削除します。オブジェクト(ライブボードなど)は削除されません。また、TMLのExportも行われません。
--org:実行時にOrgを切り替える場合、このオプションでOrgを指定することができます。
--directory:TMLをエクスポートする先のフォルダを指定するオプションです。
--export-only:TMLをエクスポートするだけにするオプションです。このオプション指定時は削除は行われません。
その他、以下の共有オプションが利用可能です。
--no-prompt、--config(必須)、--temp-dir、--verbose
なお、from-tag機能にはsyncerオプションがないため、対象となる実際のオブジェクトを知るすべはありません。
タグのみ削除する場合(オブジェクトは削除しない):対象となるタグは「DeleteTest」
cs_tools tools bulk-deleter from-tag --tag "DeleteTest" --tag-only --config mysetting
上のコマンドを実行すると、以下のような画面が出ます。「Y」を押すとタグのみ削除されます。

指定タグのオブジェクトを削除する場合:
cs_tools tools bulk-deleter from-tag --tag "DeleteTest" --directory c:\\temp --config mysetting
残念ながら、本機能はバグがあるようで、途中でエラーで止まります。
https://github.com/thoughtspot/cs_tools/issues/226
from-tabularオプション
削除したいオブジェクトのguidをリスト化したものを用いて削除を行う機能です。モデルなどで検索結果が保存されているような場合、依存関係でGUIからは削除できませんが、やはりこの機能でも依存関係の影響で削除できないものは削除できません。あらかじめ依存関係がない状態にする必要があります。依存関係を調べるには、bulk-deleterをdownstreamオプションで実行することで指定したguidが使われているオブジェクトを探し出すことが可能です。
オプション:
--syncer:Syncerでリストアップしたオブジェクトを削除します。BOM付きのCSVファイルはエラーになるのでご注意ください(詳細は後述)。
--deletion:削除対象のリストが入ったCSVやテーブル(Syncerオプションとの組み合わせで指定します)。
--directory:TMLをエクスポートする先のフォルダを指定するオプションです。
--export-only:TMLをエクスポートするだけにするオプションです。このオプション指定時は削除は行われません。
その他、以下の共有オプションが利用可能です。
--no-prompt、--config(必須)、--temp-dir、--verbose
注意事項:
- Syncerの指定が間違っていても特にエラーとならないのでご注意ください(CSVで確認)。何も起こらないだけです。
- CSVファイルの場合、BOM付きのCSVファイルはエラーになるのでご注意ください。ExcelでUTF-8のCSVで保存すると自動的にBOM付きのCSVになるので、メモ帳などでBOMなしで保存し直してください。
実際に使う場合、以下のような簡単なCSVを準備すればオッケーです。カラム名を「guid」にするところがポイントです。

TMLに削除対象をExportし、削除するコマンド:
cs_tools tools bulk-deleter from-tabular --syncer "csv://directory=.&delimiter=," --deletion deletelist --directory c:\\temp --config mysetting
この機能の基本形のコマンドはこちらになるかと思います。このオプションのような指定を行うと、Syncerで指定したファイルやDBの「deletelist」というファイルもしくはテーブル(今回だと、CSVファイルなので、「deletelist.csv」に記載されたオブジェクトに対してTMLを「c:\temp」に保存しながら、対象オブジェクトを削除します。
これを実行すると、以下のようになります。

一部削除済みのオブジェクトがあったため、ERRORが発生しています。依存関係があり削除できないオブジェクトがあった場合は特に表示が何も出ないので要注意です。
※2025/11/04時点の情報です
運営会社
