# TD Toolbelt クイックスタート

TD Toolbelt を使用すると、コマンドラインインターフェースから Treasure Data 製品のほとんどの機能にアクセスできます。以下の操作が可能です：

+ データベースとテーブルの作成
+ テーブルへのデータのインポートおよびエクスポート
+ テーブルスキーマの設定と変更
+ クエリの実行
+ ジョブステータスの監視
+ ジョブ結果の表示とダウンロード
+ スケジュールクエリの作成、その他多数


## インストール

OSX
Version 10.8+

Windows
64-bit only

Linux
All versions

Ruby
`gem install td`

TD Toolbelt は、対象環境に最適な方法で配布されています：

+ Windows と Mac OSX は、Toolbelt と呼ばれるパッケージ化されたインストーラーとして配布されます。
+ Linux（Ubuntu、RedHat、CentOS）は、Fluentd Package（`fluentd`）パッケージの一部として配布されます。
+ Ruby の 'gem' モジュールは、次のコマンドを使用して任意のシステムにインストールできます：`gem install td`


Ruby に慣れていて、すでにシステムにインストールされている場合は、Ruby オプションを使用してください。

### Ruby Gem

Ruby に慣れている場合は、CLI を使用して `td` を gem としてインストールおよび管理できます。TD Toolbelt とその依存関係をインストールするには、次のコマンドを実行します：


```shell
gem install td
```

`rbenv` や `rvm` などの Ruby 環境マネージャーを使用している場合、TD Toolbelt の異なるバージョンが各プロジェクト、環境、または使用中の Ruby バージョン内に限定される可能性があり、`td` gem を複数回インストールする必要がある場合があります。詳細については、以下の「アップグレード、Ruby Gem」セクションを参照してください。

### Windows

Windows マシンに Ruby がインストールされていることを確認してください。Ruby インストーラーは https://rubyinstaller.org/ からダウンロードできます。

Ruby をインストールした後、コマンドプロンプトを開いて TD Toolbelt gem をインストールします：


```shell
gem install td
```

### Mac OSX

[Homebrew](https://formulae.brew.sh/formula/ruby) 経由、または `rbenv` や `rvm` などの Ruby バージョンマネージャー経由で Ruby をインストールできます。また、Mac OSX にプリインストールされているシステム Ruby を使用することもできます。

選択した Ruby バージョンをインストールした後、コマンドプロンプトを開いて TD Toolbelt gem をインストールします：


```shell
gem install td
```

### Linux

Info
2023年のリブランディング以前、fluent-package は td-agent としてリリースされていました。Treasure Data は以前のバージョンの td-agent をサポートしていました。しかし、新しいバージョンの td-agent と fluent-package は現在 Fluentd コミュニティの下でサポートされています。そのため、fluent-package 自体は Treasure Data によってサポートおよび保守されていません。自己責任でご使用ください。Treasure Data はパッケージではなく、td コマンドのサポートを引き続き提供します。

TD Toolbelt は Linux 上で `td-agent` パッケージおよび `fluent-package` パッケージの一部として配布されています。

このパッケージには、Linux システム上で td-agent と td を CLI で実行するために必要なすべての依存関係が含まれています。これには、これらのツールが動作することが保証されている Ruby のバージョンも含まれます。

RPM Package (Red Hat Linux/Amazon Linux)
#### Red Hat


```bash fluent-package 6 (LTS)
curl -fsSL https://fluentd.cdn.cncf.io/sh/install-redhat-fluent-package6-lts.sh | sh
```

#### Amazon Linux


```bash fluent-package 6 (LTS)
curl -fsSL https://fluentd.cdn.cncf.io/sh/install-amazon2023-fluent-package6-lts.sh | sh
```

DEB Package (Debian/Ubuntu)
#### Ubuntu Noble


```bash fluent-package 6 (LTS)
curl -fsSL https://fluentd.cdn.cncf.io/sh/install-ubuntu-noble-fluent-package6-lts.sh | sh
```

#### Ubuntu Jammy


```bash fluent-package 6 (LTS)
curl -fsSL https://fluentd.cdn.cncf.io/sh/install-ubuntu-jammy-fluent-package6-lts.sh | sh
```

#### Debian Trixie


```bash fluent-package 6 (LTS)
curl -fsSL https://fluentd.cdn.cncf.io/sh/install-debian-trixie-fluent-package6-lts.sh | sh
```

#### Debian Bookworm


```bash fluent-package 6 (LTS)
curl -fsSL https://fluentd.cdn.cncf.io/sh/install-debian-bookworm-fluent-package6-lts.sh | sh
```

## インストールの確認

ターミナルを開き、`td` コマンドが使用可能であることを確認します。


```shell
td --version
```

## アップデート

### Mac OSX または Windows

TD Toolbelt ウェブサイトから Mac OSX 用の TD Toolbelt インストーラーパッケージ（.pkg ファイル）または Windows 用の Toolbelt インストーラー実行ファイル（64ビットのみサポート）をダウンロードした場合、Toolbelt は自動的に更新されます。

CLI からコマンドが呼び出されるたびに、プログラムは新しいバージョンが存在するかどうかを確認し、バックグラウンドで更新されたバージョンをダウンロードしてインストールします。TD Toolbelt は1時間ごとに更新されたバージョンをチェックします。ユーザーは次のコマンドでいつでも更新をトリガーできます：


```shell
td update
```

自動更新機能は v0.10.77 以降で利用可能です。それ以前のバージョンを実行している場合（`td --version` コマンドでバージョンを確認）、Treasure Data Toolbelt から最新のパッケージをインストールして、できるだけ早くアップグレードしてください。

`td update` コマンドは、以下の他のインストール方法のプレースホルダーです。

### Ruby Gem

TD Toolbelt を gem としてインストールした場合、定期的に新しいバージョンを確認する必要があります。100% の後方互換性を維持するよう努めているため、常に最新バージョンに更新することをお勧めします。gem コマンドを使用して更新するには、次のコマンドを実行します：


```shell
gem update td
```

`rbenv` や `rvm` などの Ruby 環境マネージャーを使用している場合、TD Toolbelt の異なるバージョンが各プロジェクト、環境、または Ruby バージョン内に限定される可能性があります。

また、`gem install` がカスタマイズされた `GEM_HOME` 環境変数で呼び出された場合、または bundler の `bundle install` が `--path` オプションで呼び出された場合、インストールされた gem はプロジェクトにローカル（通常はプロジェクトのフォルダー構造内にインストール）であり、システム全体でグローバルにインストールされて利用可能ではありません。

使用中の td gem のバージョンを再確認するには、次のコマンドを実行します：


```shell
gem list | grep -E '^td '
td (0.11.2, 0.10.99, 0.10.97)
```

状況に応じて、`gem` をラッパーに置き換える必要がある場合があります。例：
`/usr/bin/ruby/toolbelt/bin/gem` または `/usr/lib/fluent/ruby/bin/fluent-gem`

## 基本的な使い方

`td` コマンドには、`td help <command>` で使用できる複数のヘルプサブメニューがあります。

例：


```shell
td help db
td help table
td help job
```

### API キーの設定

最初に行うことは、API キーを設定することです。**マスター** API キーを使用してください。


```shell
td apikey:set YOUR_API_KEY
```

API キーが正しく設定されていることを確認するには、次のコマンドを実行します。


```shell
td apikey
```

### データベースの一覧表示

アクセス権のあるアカウント上のすべてのデータベースを一覧表示するには、次のコマンドを実行します。


```bash
td db:list
```


```bash
+------------------------------------+--------+
| Name                               | Count  |
+------------------------------------+--------+
| database_1                         | 10     |
| database_2                         | 0      |
| database_3                         | 1000   |
+------------------------------------+--------+
3 rows in set
```

### データベース内のテーブルの一覧表示

データベースの一覧が取得できたので、データベース名で簡単にデータベース内のすべてのテーブルを検索できます。


```bash
td table:list database_1
```


```bash
+---------------+--------------+------+-------+--------+---------------------------+---------------------------+---------------------------------------------+
| Database      | Table        | Type | Count | Size   | Last import               | Last log timestamp        | Schema                                      |
+---------------+--------------+------+-------+--------+---------------------------+---------------------------+---------------------------------------------+
| database_1    | table_1      | log  | 1     | 0.0 GB | YYYY-MM-DD HH:MM:SS +0000 | YYYY-MM-DD HH:MM:SS +0000 | param1:string, param2:string                |
| database_1    | table_2      | log  | 11    | 0.0 GB | YYYY-MM-DD HH:MM:SS +0000 | YYYY-MM-DD HH:MM:SS +0000 | param1:string, param2:string, param3:string |
+---------------+--------------+------+-------+--------+---------------------------+---------------------------+---------------------------------------------+
2 rows in set
```

### クエリの実行

次に、データベース `database_1` のテーブル `table_1` 内のすべてのデータを見てみましょう。SQL クエリコマンドを発行してこれを行います。


```bash
td query -d database_1 -w "SELECT * from table_1"
```


```bash
Job 1224749766 is queued.
Use 'td job:show 1224749766' to show the status.
  Hive history file=/mnt/hive/tmp/12345/hive_job_log_dff88b37-a800-4df6-a2a3-26e53e83e047_1845878157.txt
  Job is running in resource pool: hadoop2 with priority: default
  **
  ** WARNING: time index filtering is not set on database_name.table_name!
  ** This query could be very slow as a result.
  ** If you used 'unix_timestamp' please modify your query to use TD_SCHEDULED_TIME instead
  **   or rewrite the condition using TD_TIME_RANGE
  ** https://docs.treasuredata.com/products/customer-data-platform/data-workbench/queries/hive/performance_tuning
  **
  OK
  MapReduce time taken: 0.651 seconds
  Fetching results...
  Total CPU Time: 0
  Total Records: 11
  Time taken: 2.368 seconds
  Debug log = debug_1224749766_1638717494786.gz
Status      : success
Result      :
WARNING: the job result is being downloaded...  182 B /  182 B : ================= 100 =================
+--------+--------+--------+-----------------------------------------------------------------------------+------------+
| param1 | param2 | param3 | v                                                                           | time       |
+--------+--------+--------+-----------------------------------------------------------------------------+------------+
| value1 | value2 | null   | {"param1":"value1","param2":"value2","time":"1623230494"}                   | 1623230494 |
| value1 | value2 | null   | {"param1":"value1","param2":"value2","time":"1623229900"}                   | 1623229900 |
| value1 | value2 | null   | {"param1":"value1","param2":"value2","time":"1623229819"}                   | 1623229819 |
+--------+--------+--------+-----------------------------------------------------------------------------+------------+
3 rows in set
```

クエリの結果はコマンドラインに表示されます。`td job:show JOB_ID` を実行するか、ウェブコンソールで表示して結果を確認することもできます。

### ジョブの管理

次のコマンドを実行して、最近のすべてのジョブを表示できます。


```bash
td job:list
```


```bash
| JobID      | Status  | Start                     | Elapsed     | CPUTime           | ResultSize | Priority | Result | Type | Database      | Query                        | Duration |
+------------+---------+---------------------------+-------------+-------------------+------------+----------+--------+------+---------------+------------------------------+----------+
+------------+---------+---------------------------+-------------+-------------------+------------+----------+--------+------+---------------+------------------------------+----------+
| 0123456789 | success | YYYY-MM-DD HH:MM:SS +0000 |         12s |                   | 182 B      | NORMAL   |        | hive | database_name | select * from table_1 ... | 00:00:12 |
+------------+---------+---------------------------+-------------+-------------------+------------+----------+--------+------+---------------+------------------------------+----------+
1 rows in set
```

さらに、予想以上に時間がかかっているジョブがある場合は、次のコマンドを実行して簡単に終了できます。


```bash
td job:kill JOB_ID
```

# 参考情報

- [GitHub ソース](https://github.com/treasure-data/td)
- [プロキシアクセス](/ja/tools/cli-and-sdks/proxy-access) - プロキシ経由で Toolbelt を使用する方法
- [API キー検索順序](/ja/tools/cli-and-sdks/search-order) - TD Toolbelt が API キーと API サーバーを検索する順序。同じマシン上の複数のプロジェクトで複数のキーを使用する場合に役立ちます。
- [API リファレンス](/ja/tools/cli-and-sdks/api)
- [TD Toolbelt ウェブサイト](https://toolbelt.treasuredata.com/) - Toolbelt をダウンロードするための元のソース。常に最新の状態が保証されています。
- [コマンドラインからのデータのクエリとインポート](/ja/tools/cli-and-sdks/querying-and-importing-data-to-treasure-data-from-the-command-line)
- [TD Toolbelt マニュアルページへのアクセス](/ja/tools/cli-and-sdks/accessing-the-td-toolbelt-man-pages)