
概要 📖 – 複数の表を結合する
Merge DATは、複数の DAT テーブルを行・列・セル単位で結合し、列名・行名マッチによる上書きまで担う多入力テーブル合成 DATです。ワイヤード入力に加えて DAT パラメータでパス指定した DAT も結合対象になります。How で行追加 (row) / 列追加 (col) / セル結合 (collapsecells) / 行・列単位の上書き (repcolcells / reprowcells) など 7 種類の結合方式を選び、By Name で列名・行名による意味的マッチに切り替え、Concatenate with で Collapse 系の区切り文字、Append Unmatched で未マッチ行・列を末尾追加するかを制御します。
主な用途 🎯
- 複数テーブルの行結合 (Append Rows)でログや観測値を複数ソースから 1 枚に積み上げる多入力集約
- 複数テーブルの列結合 (Append Columns)で異なるソースのカラムを横方向に並べる schema 合成
- By Name オプションによる列名・行名マッチでヘッダー揃いの混在テーブルを意味的に正しい位置で連結
- Collapse Cells / Rows / Columns でのセル結合を Concatenate with の区切り文字付きで実行する 1 ノード concat
- Replace Cells by Row / Column による上書き合成で行名・列名マッチした既存セルを後段テーブルの値で差し替え
データフロー 🔄
複数の入力 DAT (ワイヤード入力 +DATパラメータで指定したパス DAT)
↓
Merge DAT (Howで結合方式を 7 種から選択、By Nameで列名・行名マッチを有効化、Concatenate withで Collapse 系の区切り文字、Append Unmatchedで未マッチ行/列を末尾に追加するか)
↓
1 枚に結合された出力テーブル DAT
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Merge Page 🔗
結合対象 DAT の指定 📥
DAT .dat 🔗
– 結合対象とする DAT へのパスを指定する文字列パラメータ (スペース区切りで複数指定可)
– ワイヤード入力 (ノード間の接続) と併用でき、両方が結合対象として扱われる
– パス指定とワイヤード入力を組み合わせると「定常的な結合対象 + 動的に切替える追加入力」のような構成が組める
How (結合方式の選択) .how 🎛️
複数テーブルをどう結合するかを決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Append Rows | .row |
後続テーブルの行を 1 枚目のテーブルに追加 (By Name 有効時は同名カラムにデータを揃え、後続の 1 行目は追加しない。列数が多いテーブルは余分列を末尾に追加) |
| Append Columns | .col |
後続テーブルの列を 1 枚目のテーブルに追加 (By Name 有効時は同名行にデータを揃え、後続の 1 列目は追加しない。行数が多いテーブルは余分行を末尾に追加) |
| Collapse Columns | .collapsecol |
各行のすべてのセルを 1 セルに連結 (出力は 1 列 × N 行) |
| Collapse Rows | .collapserow |
各列のすべてのセルを 1 セルに連結 (出力は 1 行 × N 列) |
| Collapse Cells | .collapsecells |
全セルを 1 セルに連結 (出力は 1 行 1 列の単一セルテーブル) |
| Replace Cells by Column | .repcolcells |
1 枚目のテーブルのデータを後続テーブルのデータで行名マッチして上書き (常に最後のテーブルの値が採用される) |
| Replace Cells by Row | .reprowcells |
1 枚目のテーブルのデータを後続テーブルのデータで列名マッチして上書き (常に最後のテーブルの値が採用される) |
結合挙動の細部パラメータ 🧩
By Name .byname 🏷️
– 行追加 / 列追加時に列名・行名でマッチして連結するかを切替える On/Off パラメータ
– On のとき: Append Rows なら列名揃え、Append Columns なら行名揃えで意味的に正しい位置に結合される (ヘッダー混在テーブルの安全な合体に必須)
– Off のとき: 位置 (インデックス) ベースで単純に行・列を後ろに繋ぐだけになる
Concatenate with .spacer ➗
– Collapse 系 (Collapse Columns / Rows / Cells) でセルを連結する際に挟む区切り文字を指定する文字列パラメータ
– デフォルトはスペース 1 文字 (公式仕様)。カンマ / タブ / 任意の区切り文字に変更可能
– CSV/TSV 出力を意識した区切り文字を指定すれば、Collapse 結果をそのまま外部出力に流せる
Append Unmatched .unmatched ➕
– By Name 有効時に、後続テーブルにあって 1 枚目に存在しない行 / 列を出力末尾に追加するかを制御する On/Off パラメータ
– On のとき: 未マッチ行 / 列も出力に取り込まれ、データの取りこぼしを防ぐ (公式の典型挙動)
– Off のとき: 1 枚目に存在する行名 / 列名のみが出力対象になり、未マッチデータは破棄される
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: By Nameで複数ログ表を1枚に集約 📋
Table DAT (ログ A、ヘッダー timestamp value) + Table DAT (ログ B、同ヘッダー) → Merge DAT (How=Append Rows, By Name=On) → 統合ログテーブル
別々の入力から集まる構造化ログテーブルを 1 枚に集約する基本パターンです。By Name=On にしておくと、各入力テーブルの 1 行目をヘッダーとして扱い、同名カラムにデータを揃えて積み上げてくれるので、カラム順がソース間でズレていても安全に行追加できます。
- ヘッダー行を持つテーブル A (例:
timestamp value) と同じヘッダーを持つテーブル B を用意 - Merge DAT に両方の Table DAT をワイヤード入力として接続
HowをAppend Rows、By NameをOnに設定 (後続テーブルの 1 行目はヘッダー扱いで自動除外)- 出力テーブルを Examine DAT に通し、両ソースの行が正しい列に積み上がっているか確認
Example 2: 複数セルを1文字列にまとめる 🧵
Table DAT (複数セル) → Merge DAT (How=Collapse Cells, Concatenate with=",") → 1 セルテーブル (CSV 風の連結文字列)
Merge DAT は複数入力の合成だけでなく、単一テーブルのセルを 1 セルに畳む用途にも使えます。How=Collapse Cells と Concatenate with="," の組み合わせで、テーブル全体を CSV 風の 1 文字列に集約し、そのまま外部出力や Python 側での文字列処理に渡せます。
- 対象セルを並べた Table DAT を Merge DAT に接続
HowをCollapse Cellsに設定 (全セルが 1 セルに連結される)Concatenate withにカンマ,やタブ\tなど任意の区切り文字を指定- 出力結果を File Out DAT や Python で参照し、想定の区切り文字で結合されているか確認
Example 3: Replace by Rowで行名一致を上書き 🔁
Table DAT (ベース) + Table DAT (差分パッチ) → Merge DAT (How=Replace Cells by Row) → 差分が適用されたテーブル
How=Replace Cells by Row を使うと、1 枚目のテーブルに対して後続テーブルが持つ同名行のセルを上書きします。設定マスターと部分パッチを別々の Table DAT に分けて保管し、Merge DAT で差分だけを最終出力に反映する「ベース + 差分」型の運用が組めます。
- 全行・全列を持つベーステーブルと、上書きしたい行だけを含む差分テーブルを用意
- Merge DAT に両方を接続 (差分テーブルが後段になる順序で入力)
HowをReplace Cells by Rowに設定 (公式仕様で最後のテーブルの値が常に採用される)- 出力テーブルを Examine DAT で確認し、ベース行の値が差分テーブルで指定した行のみ更新されているかチェック
関連オペレータ 🔗
類似機能OP 🔍
- Insert DAT — 単一テーブルに行 / 列を挿入する DAT (Merge と違い結合ではなく既存テーブルの拡張が責務)
- Substitute DAT — テーブルセル内の文字列パターンを置換する DAT (Merge の Replace 系と用途が重なる場面あり)
- Switch DAT — 複数 DAT から 1 つを選択する DAT (Merge は全部結合、Switch は 1 つ選択)
- Reorder DAT — テーブルの行・列の並び順を変更する DAT (Merge 後の整形に併用)
組み合わせ推奨OP 🔄
- Table DAT — Merge の典型的な入力ソースとなる静的テーブル DAT
- Examine DAT — Merge 後のテーブル内容をリアルタイムで可視化してデバッグ
- DAT Execute DAT — Merge によるテーブル変化 (行 / セル変更) を検知して Python コールバックを発火
- Convert DAT — テキスト / CSV 入力をテーブル形式に変換してから Merge に渡す前段処理
- Select DAT — Merge の入力に渡す前に行・列を絞り込む前段フィルタ
前処理・後処理DAT 🎯
- 前処理: Table DAT、Convert DAT、Select DAT、File In DAT
- 後処理: Examine DAT、Null DAT、File Out DAT、DAT Execute DAT
Info DAT情報 📊
Merge DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time 等の共通 DAT Info チャンネルを参照可能)。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Append Rows したが後続テーブルのヘッダー行も結果に混ざってしまう
✅ Solution:
By NameをOnに切替える (公式仕様で By Name 有効時は後続テーブルの 1 行目がヘッダー扱いとなり結果から除外される)- ヘッダー揃いでないテーブル同士を結合する場合は、前段に Select DAT を挟んで先頭行を落としてから Merge に渡す
- 実際にどの行が出力されているかを Examine DAT で 1 枚ずつ確認しながらカラム順を揃える
❌ Problem: By Name を On にしても列がうまく揃わず、ズレた位置にデータが入る
✅ Solution:
- 各入力テーブルの列名 (1 行目) のスペル・大文字小文字が完全一致しているか Examine DAT で逐一確認
- 末尾に意図しない空白文字や改行が混入している場合は Substitute DAT で正規化してから Merge に渡す
Append UnmatchedをOnにして、想定外の列名が末尾に追加されているかを観察するとミスマッチが特定しやすい
❌ Problem: Collapse Cells の結果が想定と違う区切り文字で連結される
✅ Solution:
Concatenate withの値を確認 (デフォルトはスペース 1 文字、未編集だと半角スペースで連結される)- 区切り文字にタブを入れたい場合は
\tのようなエスケープが期待通り解釈されるか Examine DAT でセル内容を確認 - Collapse 系は
How値ごとに「行ごとに畳む / 列ごとに畳む / 全部畳む」と挙動が変わるため、目的に応じてcollapserow/collapsecol/collapsecellsを使い分ける
❌ Problem: Replace Cells by Row / Column の結果が期待通りに上書きされない
✅ Solution:
- 公式仕様で Replace 系は「常に最後のテーブルの値が採用される」ため、ベースと差分の入力順を確認し、差分テーブルが後段になっているか入れ替えてみる
- Replace Cells by Row は列名マッチ、Replace Cells by Column は行名マッチで動くため、差分テーブルが期待するマッチ軸 (列名 or 行名) を持っているかを Examine DAT で確認
- 差分テーブルに存在しないが上書きしたかった行 / 列がある場合は、その行 / 列を差分テーブル側に明示的に追加 (Merge は欠落行を補わない)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Merge DAT
- TouchDesigner Documentation (Category page)
- Table DAT (Merge の典型的な入力ソース)

