
概要 📖 – 行と列を抜き出す
Select DATは、入力テーブルから指定した行と列だけを抜き出し、名前・インデックス・値・条件で範囲指定できる DATです。DAT パラメータで別の DAT をパス参照して取り込めるため、入力線をつながずに離れたテーブルを中継する用途にも使えます。行と列はそれぞれ名前・インデックス・値・条件式の 4 通りで指定できます。
主な用途 🎯
- Table DAT から特定の行・列だけを抜き出して下流に渡す
- 名前 (ヘッダー) やインデックスを使って欲しいセル範囲を範囲指定する
- パターンマッチングや条件式で動的にマッチした行・列を抽出する
- 離れた場所にある別の DAT をパス参照で取り込み、入力線をつながずに中継する
- 抽出結果を文字列や式の評価値として出力し、後段の処理形式を整える
データフロー 🔄
入力: 元のテーブル DAT (またはDATパラメータでパス参照)
↓
行の絞り込み (Select Rows: 名前 / インデックス / 値 / 条件)
↓
列の絞り込み (Select Cols: 名前 / インデックス / 値 / 条件)
↓
出力形式の決定 (Output: そのまま / 文字列 / 式評価)
↓
出力: 抽出された部分テーブル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Select Page 📋
参照元 DAT .dat 🔗
抽出元となるテーブルのパス指定
DAT .dat 🔗
– DAT (参照元 DAT) — 抽出元として参照する DAT のパスを指定します。
– 入力線で直接つなぐ代わりに、離れた場所にある DAT をパス文字列で取り込めます。
先頭の保持 .firstrowcol 📌
ヘッダー行・ヘッダー列を抽出結果に常に残すためのトグル:
- Include First Row (先頭行を含む):
Select Rowsの設定で選ばれていなくても、先頭行 (ヘッダー行) を強制的に含めます。 - Include First Col (先頭列を含む):
Select Colsの設定で選ばれていなくても、先頭列 (ヘッダー列) を強制的に含めます。
行の選択方法 .extractrows ↕️
Select Rows (行の選択方法) — どの方式で行を絞り込むかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| All | .all |
すべての行を選択 |
| by Name | .byname |
Start Row Name と End Row Name で名前による範囲指定 |
| by Index | .byindex |
Start Row Index と End Row Index でインデックスによる範囲指定 |
| by Start Name, End Index | .bynameindex |
開始を名前、終了をインデックスで指定する混合範囲 |
| by Start Index, End Name | .byindexname |
開始をインデックス、終了を名前で指定する混合範囲 |
| by Values | .bynames |
Row Select Values で行の値を明示列挙して選択 |
| by Condition | .byexpr |
Row Select Condition の式を From Column の列に対して評価して選択 |
行の範囲指定 .rowrange 🔢
名前・インデックスで行範囲を絞り込むパラメータ群
Start Row Name .rownamestart 🔤
– Start Row Name (開始行の名前) — 選択範囲の開始位置となる行の名前を指定します。
Start Row Index .rowindexstart 🔢
– Start Row Index (開始行のインデックス) — 選択範囲の開始位置となる行のインデックスを指定します。
End Row Name .rownameend 🔤
– End Row Name (終了行の名前) — 選択範囲の終了位置となる行の名前を指定します。
End Row Index .rowindexend 🔢
– End Row Index (終了行のインデックス) — 選択範囲の終了位置となる行のインデックスを指定します。
Row Select Values .rownames 🎯
– Row Select Values (行の選択値) — 選択したい行の名前を実際に列挙します。
– TouchDesigner のパターンマッチング (row[1-4] で row1〜row4 を選択など) が使えます。' のような一部の文字は前に \ が必要です。
Row Select Condition .rowexpr 🧮
– Row Select Condition (行の選択条件) — 評価される式を指定し、結果が真になった行だけを選択します。
– 既定の Python 式は re.match('.*',me.inputCell.val) != None で、これはすべての値にマッチします。parent().name+'[0-9]*' のように書けば親オペレータ名 + 数字にマッチさせられます。
From Column .fromcol 📍
– From Column (基準列) — 値で行を選択する際、どの列のセル値を Row Select Values と照合するかを指定します。
列の選択方法 .extractcols ↔️
Select Cols (列の選択方法) — どの方式で列を絞り込むかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| All | .all |
すべての列を選択 |
| by Name | .byname |
Start Col Name と End Col Name で名前による範囲指定 |
| by Index | .byindex |
Start Col Index と End Col Index でインデックスによる範囲指定 |
| by Start Name, End Index | .bynameindex |
開始を名前、終了をインデックスで指定する混合範囲 |
| by Start Index, End Name | .byindexname |
開始をインデックス、終了を名前で指定する混合範囲 |
| by Values | .bynames |
Col Select Values で列の値を明示列挙して選択 |
| by Condition | .byexpr |
Col Select Condition の式を From Row の行に対して評価して選択 |
列の範囲指定 .colrange 🔢
名前・インデックスで列範囲を絞り込むパラメータ群
Start Col Name .colnamestart 🔤
– Start Col Name (開始列の名前) — 選択範囲の開始位置となる列の名前を指定します。
Start Col Index .colindexstart 🔢
– Start Col Index (開始列のインデックス) — 選択範囲の開始位置となる列のインデックスを指定します。
End Col Name .colnameend 🔤
– End Col Name (終了列の名前) — 選択範囲の終了位置となる列の名前を指定します。
End Col Index .colindexend 🔢
– End Col Index (終了列のインデックス) — 選択範囲の終了位置となる列のインデックスを指定します。
Col Select Values .colnames 🎯
– Col Select Values (列の選択値) — 選択したい列の名前を実際に列挙します。
– TouchDesigner のパターンマッチング (colvalue[1-4] で colvalue1〜colvalue4 を選択など) が使えます。' のような一部の文字は前に \ が必要です。
Col Select Condition .colexpr 🧮
– Col Select Condition (列の選択条件) — 評価される式を指定し、結果が真になった列だけを選択します。
– 詳しい書き方は Row Select Condition (行の選択条件) と同じ要領です。
From Row .fromrow 📍
– From Row (基準行) — 値で列を選択する際、どの行のセル値を Col Select Values と照合するかを指定します。
出力形式 .output 📤
Output (出力形式) — 抽出したセルをどう評価して出力するかを決めるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input Data | .data |
最初の入力のデータをそのまま (加工せず) 通過させる |
| Strings | .string |
入力データを文字列として評価 (変数値を完全な文字列に展開) |
| Expressions | .expr |
入力データを式として評価 |
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: テーブルから必要列だけ抽出 📊
Table DAT → Select DAT (Select Cols=by Name) → DAT to CHOP
多数の列を持つ Table DAT から、Select DAT の列の名前指定で必要な列範囲だけを取り出し、後段の処理に渡す基本フロー。ヘッダー行を残したい場合は Include First Row をオンにしておく。
- 元データを Table DAT に用意し、1 行目をヘッダー行にする
- Select DAT を後段に配置し、
Select Colsをby Nameに設定 Start Col Name/End Col Nameに取り出したい列名を指定Include First Rowをオンにしてヘッダー行を抽出結果に残す- 後段の DAT to CHOP 等に渡して数値として利用
Example 2: 条件式で動的に行を選ぶ 🧮
File In DAT → Select DAT (Select Rows=by Condition) → Sort DAT
CSV ファイルを読み込んだテーブルから、行の選択条件に Python 式を書いて、特定の値を持つ行だけを動的に抽出する用途。From Column で照合対象の列を指定し、Row Select Condition の式が真になった行のみを残す。
- File In DAT で CSV を読み込みテーブル化
- Select DAT を後段に配置し、
Select Rowsをby Conditionに設定 From Columnに判定に使う列を指定Row Select Conditionにfloat(me.inputCell.val) > 0.5のような式を記述してマッチする行だけ残す- 後段の Sort DAT で並べ替えて整える
Example 3: 離れた表をパス参照 🔗
(別ネットワークの Table DAT) → Select DAT (DAT パラメータ参照) → Web Server DAT
入力線をつなぐ代わりに、Select DAT の DAT パラメータに離れた場所のテーブルのパスを書いて取り込む用途。配線を増やさずにネットワークをすっきり保ちつつ、必要な部分だけを切り出して中継できる。
- 参照したい Table DAT のパス (例:
/project1/data/table1) を確認 - Select DAT の入力線はつながず、
DATパラメータに参照元のパスを記述 Select Rows/Select Colsで必要な範囲を絞り込み- 後段の Web Server DAT 等に渡して配信
Example 4: パターンで複数行を一括選択 🎯
Table DAT → Select DAT (Select Rows=by Values, rownames="row[1-4]") → Table DAT
行名が連番になっているテーブルから、パターンマッチングを使って複数の行をまとめて選択する用途。Row Select Values に row[1-4] のように書くと row1 から row4 までを一度に抽出できる。
- 行名が
row1/row2… と連番になった Table DAT を用意 - Select DAT を後段に置き、
Select Rowsをby Valuesに設定 Row Select Valuesにrow[1-4]と入力して連番行をまとめて選択From Columnで照合する列 (行名が入った列) を指定して抽出を確定
関連オペレータ 🔗
類似機能OP 🔍
- Reorder DAT — 行・列の並び順を指定して並べ替える DAT。抽出ではなく順序操作の用途で対になる
- Sort DAT — テーブルの行を値で並べ替える DAT。抽出した後の整列に使う
組み合わせ推奨OP 🔄
- Table DAT — Select DAT の代表的な抽出元 / 抽出結果の格納先
- File In DAT — CSV / TSV ファイルを読み込み、Select DAT で必要部分を切り出す
- Convert DAT — テキストをテーブル化した後、Select DAT で必要な行・列を抽出
- Merge DAT — 複数テーブルを結合した後、Select DAT で必要範囲を絞り込み
- Sort DAT — Select DAT で抽出した部分テーブルを並べ替えて整える
- Web Server DAT — 抽出したテーブルを配信用ペイロードとして送出
前処理・後処理DAT 🎯
- 前処理: Table DAT、File In DAT、Convert DAT、Merge DAT、Substitute DAT
- 後処理: Sort DAT、Reorder DAT、Transpose DAT、Null DAT、Out DAT
Info CHOP情報 📊
Select DAT は Info CHOP による詳細情報取得に対応しています。num_rows / num_cols で抽出後テーブルのサイズを、total_cooks / cook_time / cpu_time で実行統計を参照でき、抽出結果のサイズ監視や、参照元テーブル変化時の再評価タイミング判定に利用できます。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 選択したはずの行・列が抽出結果に出てこない
✅ Solution:
Select Rows/Select Colsのモード (by Name/by Index/by Values/by Condition) が意図と合っているか確認- 名前指定の場合は
Start Row Name/End Row Nameがテーブル内の実際の名前と完全一致しているか確認 - ヘッダー行・ヘッダー列が消える場合は
Include First Row/Include First Colをオンにする
❌ Problem: パターン指定 (例: row[1-4]) でマッチしない
✅ Solution:
Row Select Values/Col Select Valuesはパターンマッチング対応なので、モードをby Valuesにしているか確認From Column/From Rowが照合対象として正しい列・行を指しているか確認 (値が入っていない列を指すとマッチしない)'のような特殊文字を含む場合は前に\を付けてエスケープする
❌ Problem: 条件式 (by Condition) が常に全行を返す / 何も返さない
✅ Solution:
- 既定の式
re.match('.*',me.inputCell.val) != Noneはすべての値にマッチするため、絞り込みたい場合は式を書き換える me.inputCell.valは文字列なので、数値比較するときはfloat(me.inputCell.val)のように明示的に型変換する- 式の評価対象列が
From Columnで正しく指定されているか確認
❌ Problem: 出力されたセルの中身が想定と違う形式になっている
✅ Solution:
OutputがInput Data/Strings/Expressionsのどれになっているか確認- 式や変数をそのまま渡したいときは
Input Data、文字列展開したいときはStringsを選ぶ - セル内の式を計算結果に置き換えたい場合のみ
Expressionsを選ぶ (誤って選ぶと式が評価されてしまう)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

