IBM Planning Analytics(TM1)の案件に入ると、IPA未経験のメンバーが最初の数週間で頭を抱える、という場面をよく見ます。しかも、RDBに詳しい人ほど苦労することが多いです。
TM1/Cognos Express時代から10年以上TM1の開発に携わってきた中で、RDB経験者がつまずきやすいと感じたポイントを7つにまとめました。
IBM非公式の個人による記事です。各項目の詳しい解説は、記事末尾のリンク先(note)にまとめています。
1. テーブルではなく、キューブとディメンションで考える
| TM1の用語 | ざっくり言うと |
|---|---|
| キューブ | 数値を入れておく箱(売上、人件費など、テーマごとに作る) |
| ディメンション | 箱の軸(月、部門、科目など) |
| 要素 | 軸の上の項目(「営業部」「2026-09」など) |
| 階層 | 要素の親子関係=集計の道筋(営業1課+営業2課=営業部) |
RDBでは売上は「月・部門・科目・金額」という列を持つ1行ですが、TM1では「2026-09 × 営業部 × 売上」という座標のセルに入った1つの値になります。
2. データは「追加する」のではなく「枠に書き込む」
キューブは、ディメンションの組み合わせで最初から枠(セル)が決まっています。データを入れるとは、その枠の値を書き換えることです。SQLで言えば、INSERTではなくUPDATEの発想です。
ここから、RDB経験者がハマりやすい2つの現象が生まれます。
- 新しい部門のデータが入らない → 部門ディメンションに要素がないので、書き込む枠がない
- 同じデータを2回流したら合計が倍になった → 加算で書き込む処理だった。重複行と違って、値が静かに増えるだけなので気づきにくい
3. キューブの分け方は、正規化の考え方を一度捨てる
TM1ではキューブ同士をその場でJOINする使い方は基本的にしないので、正規化の物差しがそのままでは使えません。代わりに考えるのは次の4つです。
- 粒度:日次・顧客別まで持つのか、月次・部門別で十分か
- 使い方:入力用と分析用で、同じキューブを使うか分けるか
- パフォーマンス:ディメンションが増えるほど組み合わせが膨らむ
- キューブ間の連携:ルールで参照するか、TIでコピーするか
「全部1つのキューブに入れたら重くなった」「細かく分けすぎて連携が複雑になった」は、どちらもよく見る失敗です。
4. データの取り出し方・更新の仕方がSQLと違う
- 取り出す:SELECTにあたるのはビュー。表示する要素の一覧はサブセットで決め、条件で選ぶならMDXを使う
- 更新する:画面からの入力(PAW/PAfE)、TIでの取込、ルールでの計算の3つが、同じキューブの上で共存する
MDXにもSELECT・FROM・WHEREがありますが、WHEREは「行を絞る」のではなく「行・列に置かなかった軸の座標を固定する」もので、意味が違います。
5. フィーダーは、説明する側も苦戦する
個人的に、いちばん理解が難しいのがフィーダー(FEEDERS)です。説明を受ける側はもちろん、説明する側も苦戦します。私は相手に合わせて、次のように説明を変えています。
- 一言で:計算で出した値を、合計のときに見落とさないための目印
- 利用者向け:明細は合っているのに合計が合わないとき、原因の候補になる設定
- 開発者向け:SKIPCHECKで空セルを飛ばして集計するとき、ルールで値が入るセルを集計対象に含めるための指定。足りなければ合計が合わず、多すぎれば重くなる
6. データはメモリの上にある
TM1は起動時にキューブのデータをメモリに読み込み、メモリ上で計算・集計します。速い反面、次のようなことが起きます。
- メモリ量が、扱えるデータ量の上限に直結する
- 起動時にデータ読込とフィーダー計算が走るので、モデルが大きいほど起動が遅い
- ディスクへの保存(SaveDataAllなど)は別のタイミング
「再起動すれば直るでしょ」と気軽に言えないのは、このためです。
7. 「サーバーに製品を入れて終わり」ではない
たとえばPlanning Analytics Local 2.0系では、TM1サーバーは従来どおりインストールし、PAWはDockerの上で動かします。v12ではKubernetesやOpenShiftの上で動かす構成になります。「どのコンポーネントがどこで動いているか」を最初に把握しておくと、「つながらない」と言われたときに見る場所を間違えません。
おわりに
RDBの経験は、TM1でも無駄になりません。データ品質への感覚や、件数・合計で裏を取る習慣は、そのまま強みになります。最初の切り替えさえ乗り越えれば、きっと面白くなってくるはずです。
各ポイントの詳しい解説(SQLとMDXの比較コード、キューブ設計の例など)と、新しくアサインされた人向けの「最初の1週間で読む順番」は、noteにまとめています。