
ダッシュボードは1枚のレコードじゃない(pa_dashboards)
ServiceNow で「レポートを並べて見る画面」がダッシュボードです。その1枚は単独のレコードではありません。次のような複数のテーブルが関わります。
pa_dashboards(ダッシュボード本体)、pa_tabs(タブ)
sys_grid_canvas(配置面)、sys_grid_canvas_pane(部品枠)、sys_portal(ウィジェット)
それぞれのレコードが参照でつながって、1つのダッシュボード画面を作っています。
この記事は見た目の話で終わりません。実際のテーブルを起点に、次を順に確認します。
入口になる pa_dashboards
タブを割り当てる pa_m2m_dashboard_tabs
タブ定義の pa_tabs
グリッドの配置面 sys_grid_canvas
部品の枠 sys_grid_canvas_pane
レポートが載るウィジェット sys_portal
「ダッシュボードにレポートを載せたい。どのテーブル(どの設定)が、どうつながっているのか」。この疑問に、PDI(Zurich)の OOTB で確認した構造で答えます。
想定読者は、ServiceNow の Incident などは触ったことがあるが、ダッシュボードがどんなテーブルでできているかをこれから理解したい管理者・開発者です。実機で「レポートはどこに載るのか」「タブはどう増やすのか」を判断するとき、ダッシュボードからウィジェットへの参照をどうたどるかを順番に示します。
この記事で分かること
ダッシュボード1枚が pa_dashboards → タブ → Grid Canvas → ウィジェットという複数テーブルの組み合わせでできていること
これらのテーブルが「深い業務継承」ではなく、ほぼすべて sys_metadata(Application File)直下の横並びで、構造は参照フィールドで表されること
タブの割当が pa_m2m_dashboard_tabs(M2M)で、タブ本体が pa_tabs であること
レポートや PA 部品が、最終的に sys_portal(ウィジェット)として sys_grid_canvas_pane の枠に載ること
部品の位置と大きさが posx / posy / width / height(グリッド座標)で表されること
レスポンシブ ダッシュボード(pa_dashboards 系)と旧ホームページ(sys_dashboard 系)が別系統であること
この記事の内容は ServiceNow の PDI(Personal Developer Instance)Zurich(ズーリッヒ)リリースの OOTB(初期設定)で確認した個人メモです。本番環境やカスタマイズ済み環境では、ダッシュボード構成・フィールド・件数の内容が異なる場合があります。レポートの実行時の描画や PA インジケータの計算は本記事の範囲外です。
ダッシュボードとは
ダッシュボードは「1枚の画面」ではなく、ダッシュボード本体・タブ・配置面・部品といった役割ごとのテーブルが組み合わさった仕組みです。
ダッシュボードは、レポートや Performance Analytics(PA)の部品を1つの画面にまとめて見る仕組みです。複数のレポートを目的別に並べ、タブで切り替えながら状況を把握できます。レスポンシブ ダッシュボードの概要は、公式ドキュメントでも説明されています。
この画面は単一のレコードではありません。ダッシュボード本体は pa_dashboards、タブは pa_tabs、部品の枠は sys_grid_canvas_pane というように、役割ごとにテーブルが分かれています。だから「ダッシュボードにレポートを足す」と言っても、実際には「どの枠に、どのウィジェットを置くか」という話になります。
今回確認した PDI(Zurich / OOTB)では、次の件数でした。
ダッシュボード(pa_dashboards):3件(いずれも active=true)
タブ(pa_tabs):24件
部品の枠(sys_grid_canvas_pane):119件
1つのダッシュボード画面は、これらのレコードが参照でつながって組み上がります。
実際にダッシュボードを開くと、次のように見えます。OOTB の Custom Application Inventory ダッシュボードでは、棒グラフ・単一スコアのタイル・一覧といった部品がグリッド状に並び、1枚の画面を作っています。この見た目を、以降でテーブルに分解していきます。

ダッシュボード本体の一覧(pa_dashboards)は、次のURLで確認できます。
https://<YourInstance>/pa_dashboards_list.do
ダッシュボード画面は複数テーブルの組み合わせ(全体構造)
まず、1枚のダッシュボードがどう組み上がるかの全体像です。

今回確認した PDI(Zurich / OOTB)では、構造は次のようにつながっていました。
pa_dashboards(Dashboard) … ダッシュボード本体。name(名前)、owner(所有者)、visible_to(公開範囲)を持つ。公開範囲は roles / restrict_to_roles / groups / users の組み合わせでも絞り込めます。
pa_m2m_dashboard_tabs(Dashboard Tab) … 「どのダッシュボードに、どのタブを、どの順で置くか」を表す割当(M2M)。dashboard と tab を参照し、order / home を持つ。
pa_tabs(Tab) … タブ定義。canvas_page(→sys_grid_canvas)と page(→sys_portal_page)を持つ。
sys_grid_canvas(Grid Canvas) … 1タブの配置面(グリッド)。
sys_grid_canvas_pane(Grid Canvas Pane) … 配置面の中の1つの部品枠。posx / posy / width / height で位置と大きさを持つ。
sys_portal(Portal ウィジェット) … 枠に表示される部品本体。レポートや PA 部品がここに載る。
ポイントは、pa_dashboards そのものに「どのレポートを置くか」が直接書かれていない点です。タブの割当は pa_m2m_dashboard_tabs に、部品の配置は sys_grid_canvas_pane に分かれています。ダッシュボード → タブ割当 → タブ → 配置面 → 部品枠 → ウィジェット、という参照のチェーンをたどって初めて「この画面に何が並ぶか」が決まります。
これらのテーブルは「浅い継承・横並び」
ダッシュボード系のテーブルは深い業務継承を持たず、ほぼすべて sys_metadata 直下に横並びで、つながりは参照フィールドで表されます。
task 系や CMDB 系のテーブルは、task や cmdb_ci を頂点とする業務的な継承階層を持ちました。ダッシュボード系のテーブルは、それとは性格が違います。

今回確認した PDI(Zurich / OOTB)では、次のテーブルはいずれも super_class(継承元)が sys_metadata(Application File)でした。
pa_dashboards / pa_m2m_dashboard_tabs / pa_tabs
sys_grid_canvas / sys_grid_canvas_pane / sys_portal_page
業務的な親子関係でテーブルが積み上がっているのではなく、すべてが「アプリの構成ファイル」の一種として横並びになっています。
例外は1つで、sys_portal(ウィジェット)は継承元のないルートテーブルでした(super_class が空)。これも深い継承を持たない点では同じです。
ではテーブル同士の構造(ダッシュボードとタブ、タブと配置面など)は何で表されているかというと、各テーブルの参照(Reference)フィールドです。継承ではなく参照で「親」を指すのが、このファミリーの読み方の基本になります。
各テーブルの役割と件数、上につながる参照フィールドは次のとおりです。

主なテーブルの固有フィールド数
pa_dashboards 28 / pa_m2m_dashboard_tabs 9 / pa_tabs 7 / sys_grid_canvas 3 / sys_grid_canvas_pane 7 / sys_portal 10 / sys_portal_page 12 / sys_dashboard 8
これらのテーブル定義は、次のURLで確認できます(先頭の <YourInstance> は自分のインスタンスに置き換えてください)。
https://<YourInstance>/sys_db_object_list.do?sysparm_query=nameSTARTSWITHpa_dashboard^ORnameSTARTSWITHsys_grid_canvas^ORname=sys_portal_page^ORname=pa_tabs
タブはダッシュボードに「割り当て」られる
ダッシュボードのタブは、タブ本体(pa_tabs)と、それをダッシュボードに割り当てる中間テーブル(pa_m2m_dashboard_tabs)に分かれています。
今回確認した PDI(Zurich / OOTB)では、参照は次の向きでした。
pa_m2m_dashboard_tabs の dashboard フィールド → pa_dashboards(このタブ割当がどのダッシュボードに属するか・必須)
pa_m2m_dashboard_tabs の tab フィールド → pa_tabs(どのタブ定義を指すか・必須)
pa_tabs の canvas_page フィールド → sys_grid_canvas(タブのレスポンシブ配置面)
pa_tabs の page フィールド → sys_portal_page(タブのページ・必須)
pa_m2m_dashboard_tabs は order(タブの並び順)と home(最初に開くタブか)を持ちます。だから「タブの順番を変えたい」「最初に開くタブを変えたい」ときは、ダッシュボード本体ではなくこのタブ割当(pa_m2m_dashboard_tabs) を見ることになります。
件数で見ると、今回の PDI では pa_dashboards が3件、pa_tabs が24件、pa_m2m_dashboard_tabs が5件でした。タブ定義(pa_tabs)の数とダッシュボードへの割当(pa_m2m_dashboard_tabs)の数は一致しません。OOTB のタブ/キャンバス定義が、今ある3つのダッシュボードに全部割り当てられているわけではないためです。タブ本体は使い回せる定義で、どのダッシュボードに載せるかは割当レコードで決まります。
タブ一覧は、次のURLで確認できます。
https://<YourInstance>/pa_tabs_list.do
https://<YourInstance>/pa_m2m_dashboard_tabs_list.do
部品はグリッドの枠(pane)に座標で置かれる
つまずきやすいのが、「画面に置かれた部品の枠」と「部品の中身」が別テーブルである点です。
sys_grid_canvas(Grid Canvas) … 1タブの配置面(グリッド)。今回の PDI では19件。
sys_grid_canvas_pane(Grid Canvas Pane) … 配置面の中の1つの部品枠。今回の PDI では119件。
sys_portal(Portal ウィジェット) … 枠に載る部品本体。今回の PDI では376件。
sys_grid_canvas_pane は grid_canvas で配置面を参照します。portal_widget でウィジェット本体を参照し、posx / posy(位置)と width / height(大きさ)でグリッド上の置き方を持ちます。部品の位置や大きさを変えるなら、この pane の座標を見ます。

pane の固有フィールドは次のとおりです。

このフィールド定義は、次のURLで一覧できます。
https://<YourInstance>/sys_dictionary_list.do?sysparm_query=name=sys_grid_canvas_pane^elementISNOTEMPTY
実機のサンプルでは、width が4や12、height が10といった値で、グリッド座標(posx / posy)で配置されていました。幅はグリッドの単位で表され、12 が横いっぱいにあたります。レポートや PA 部品は、最終的にこの枠に載る portal_widget(sys_portal)として表示されます。
部品枠の一覧は、次のURLで確認できます。
https://<YourInstance>/sys_grid_canvas_pane_list.do
レポートはウィジェット(sys_portal)として載る
ダッシュボードに「レポートを載せる」とき、レポートそのものが pane に入るのではありません。レポートや PA 部品は、sys_portal(Portal ウィジェット) という部品レコードを経由して枠に載ります。
sys_portal は page(→sys_portal_page)でどのページに属するかを持ちます。dropzone / offset / summary などの配置・表示用フィールドも持ちます。今回の PDI では sys_portal が376件あり、これがダッシュボードやホームページ上の「部品」の実体になっています。sys_grid_canvas_pane の portal_widget がこの sys_portal を指すことで、「この枠に、この部品を表示する」というつながりができます。

だから「ダッシュボードにレポートを足したい」場合は、配置面(sys_grid_canvas)に新しい枠(sys_grid_canvas_pane)を作ります。その枠の portal_widget でレポートを表示するウィジェット(sys_portal)を指す、という流れになります。実際の操作は GUI(ダッシュボードの編集画面)で行いますが、裏側ではこの参照チェーンができています。レポートをダッシュボードに載せる操作手順は、公式ドキュメントにまとまっています。
レスポンシブ ダッシュボードと旧ホームページは別系統
ここまで見てきた pa_dashboards 系とは別に、ServiceNow には古い「ホームページ」の系統(sys_dashboard 系)があります。両者は「画面に部品を並べる」という目的は同じですが、テーブルが別系統です。

今回確認した PDI(Zurich / OOTB)では、次の違いがありました。
レスポンシブ ダッシュボード … pa_dashboards(3件)を本体とし、sys_grid_canvas_pane(119件)が部品枠、載る部品は sys_portal(ウィジェット)。配置は posx / posy / width / height のグリッド座標。
旧ホームページ
sys_dashboard(Dashboard Layout・16件)を本体とし、sys_dashboard_detail(Placement)が配置、載る部品は sys_gauge(ゲージ)
配置は board_row / board_column / row_span / column_span の行列

旧ホームページ系の主なフィールド
sys_dashboard は columns / rows のほか、cell_width・cell_height(既定はどちらも300)を持ちます。sys_dashboard_detail は board_id(→sys_dashboard)と gauge_id(→sys_gauge)で本体とゲージを参照します。
同じ「ダッシュボード/ホームページ」でも、どのテーブルを見ているかで系統が違う点に注意してください。Zurich ではレスポンシブ ダッシュボードがホームページの役割を引き継いでおり、新しく作るならこちらが中心になります。
ホームページとレスポンシブ ダッシュボードの関係は、公式ドキュメントでも説明されています。
ServiceNow におけるダッシュボード構造のポイント
1枚のダッシュボードは、次の参照チェーンをたどります。複数テーブルのレコードの組み合わせでできています。
pa_dashboards → pa_m2m_dashboard_tabs → pa_tabs
sys_grid_canvas → sys_grid_canvas_pane → sys_portal
これらのテーブルは task 系・cmdb 系のような深い業務継承ではありません。今回確認した PDI ではほぼすべて sys_metadata(Application File)直下の横並びでした(sys_portal だけはルートテーブル)。構造は継承ではなく参照フィールドで表されます。
タブはタブ本体(pa_tabs)と割当(pa_m2m_dashboard_tabs)に分かれ、タブの順番・最初に開くタブは割当レコードの order / home で決まります。
部品は sys_grid_canvas_pane(枠)に posx / posy / width / height の座標で置かれます。その portal_widget が sys_portal(ウィジェット)を指します。レポートや PA 部品はこのウィジェットとして載ります。
レスポンシブ ダッシュボード(pa_dashboards 系)と旧ホームページ(sys_dashboard 系)は別系統です。配置はそれぞれグリッド座標と行列で表します。
ダッシュボードを調べるときは、まず「いま見ているのはどの段か」を見分けます(ダッシュボード本体/タブ/部品枠/ウィジェット)。ダッシュボードからウィジェットまでの参照チェーンを上下にたどります。
実機を見て気づいたこと
sys_grid_canvas には legacy_page(→sys_portal_page)という参照フィールドが残っていました。今のタブ・配置の主経路は pa_tabs.canvas_page / pa_tabs.page ですが、以前の仕組みの名残とみられるフィールドが配置面テーブル側にも残っています。
ダッシュボードは pa_dashboards_group(Dashboard Group)で束ねてグループ管理もできる作りでした。一覧では見えにくい、フォルダ分けのような機能です。
sys_portal_page は54件ありましたが、selectable(ユーザーが選べる状態)は5件だけでした。大半は選択対象ではない内部的なページとみられます。
次に読むなら
次に確認したいのは、次のテーマです。
ウィジェット(sys_portal)が実際にどんな部品(レポート/PA インジケータ/ゲージ)を描くかという「中身」
レポート定義(sys_report)と Performance Analytics(pa_indicators / pa_widgets)の関係
この記事は構造(テーブル・フィールド・参照)に絞ったため、レポートの実行時の描画や PA のスコア計算には踏み込んでいません。これらは別記事で扱う予定です。
用語
PDI:Personal Developer Instance(無料の検証用インスタンス)
OOTB:Out of the Box(初期設定のまま)
ダッシュボード(pa_dashboards):レポートや PA 部品を並べて見る画面の本体
タブ(pa_tabs):ダッシュボードの中の切り替え単位
Grid Canvas(sys_grid_canvas):1タブの配置面(グリッド)
Pane(sys_grid_canvas_pane):配置面の中の1つの部品枠(座標で配置)
ウィジェット(sys_portal):枠に載る部品本体(レポート/PA部品が載る)
sys_metadata(Application File):アプリの構成ファイルを表す基底テーブル
自分の環境で確認するときのURL
先頭に自分のインスタンスを付けると、同じ画面が開けます。
テーブル定義 : sys_db_object_list.do?sysparm_query=nameSTARTSWITHpa_dashboard^ORnameSTARTSWITHsys_grid_canvas^ORname=sys_portal_page^ORname=pa_tabs
ダッシュボード一覧 : pa_dashboards_list.do
タブ一覧 : pa_tabs_list.do / pa_m2m_dashboard_tabs_list.do
配置面 / 部品枠 : sys_grid_canvas_list.do / sys_grid_canvas_pane_list.do
ウィジェット一覧 : sys_portal_list.do
部品枠フィールド : sys_dictionary_list.do?sysparm_query=name=sys_grid_canvas_pane^elementISNOTEMPTY関連記事
ServiceNow レポート・ダッシュボード完全ガイド:Data VisualizationsとPerformance Analyticsの使い分け — pa_dashboardsのテーブル構造を追った後、レポートとの使い分けを俯瞰したいときはこちらが入口になります
検証範囲とおことわり
確認した範囲:pa_dashboards / pa_m2m_dashboard_tabs / pa_tabs / sys_grid_canvas / sys_grid_canvas_pane
sys_portal / sys_portal_page / sys_dashboard / sys_dashboard_detail の実在と継承
sys_portal を除き sys_metadata 直下
構造を作る参照フィールドの向き、各テーブルの固有フィールド数と主要フィールド
部品枠の座標フィールド(posx / posy / width / height)、各テーブルのレコード件数
レスポンシブ ダッシュボードと旧ホームページの系統の違い。すべて PDI(Zurich / 2026-06-20 確認)の OOTB で取得しています
確認していない範囲:レポート(sys_report)が実行時にどう描画されるか、Performance Analytics のインジケータ/スコアの計算
レスポンシブ ダッシュボードと Analytics Center / Next Experience(par_dashboard)の関係詳細
タブ並びやペイン座標の実レンダリング挙動、各ダッシュボードの ACL・共有による実可視範囲。これらは構造(テーブル・フィールド・件数)の範囲外として別途扱います
今回は PDI の OOTB(初期設定)を前提に、ダッシュボードの構造を確認しました。実環境では、既存のカスタマイズによってダッシュボード・タブ・ウィジェットの数や内容が変わります。