Power BI + NetSuite: Building Finance Dashboards

Complete guide to connecting Power BI with NetSuite using SuiteAnalytics Connect, ODBC, and saved searches — with financial KPIs, DAX formulas, and dashboard templates.

E
ECOSIRE Research and Development Team
|2026年3月19日6 分で読める1.2k 語数|

Power BI + NetSuite: 財務ダッシュボードの構築

NetSuite の組み込みレポートは機能しますが、制限があります。SuiteAnalytics ワークブックと保存された検索は運用クエリには十分ですが、モジュール間の分析、複数期間のトレンド分析、およびエグゼクティブ レベルの財務ストーリーテリングには苦労します。 NetSuite を利用する組織は、ERP データにふさわしい分析の深さを引き出すために Power BI を接続することが増えています。

このガイドでは、公式 SuiteAnalytics Connect ODBC ドライバーから保存された検索エクスポートまで、Power BI を NetSuite に接続するすべての方法をカバーし、NetSuite 財務データを使用して完全な CFO ダッシュボードを構築します。

重要なポイント

  • SuiteAnalytics Connect ($2,399/ユーザー/年) は、NetSuite への公式 ODBC ベースの接続です
  • CSV エクスポートによる保存された検索の統合は無料ですが、リアルタイムの更新がありません
  • NetSuite ODBC ドライバーは、300 を超える NetSuite レコード タイプをクエリ可能なテーブルとして公開します
  • RESTlet ベースの統合により、最も柔軟なカスタム データ抽出アプローチが提供されます
  • 財務諸表 (損益計算書、貸借対照表、キャッシュ フロー) には、Power BI で複数の結合クエリが必要です
  • DAX タイム インテリジェンスは NetSuite 期間データを動的な YTD、MTD、YoY 比較に変換します
  • Power BI の行レベルのセキュリティは、NetSuite の子会社ベースのアクセス制御を反映できます。
  • NetSuite の会計カレンダー (カスタム期間あり) には、Power BI のカスタム日付テーブルが必要です

NetSuite から Power BI への接続方法

方法 1: SuiteAnalytics Connect (ODBC)

SuiteAnalytics Connect は、Oracle/NetSuite の公式分析データベースであり、NetSuite データへの読み取り専用の ODBC 準拠インターフェイスです。 NetSuite レコードをリレーショナル テーブルとして公開し、標準 SQL クエリを可能にします。

要件:

  • SuiteAnalytics Connect ライセンス (フルアクセスの場合、ユーザーあたり年間 2,399 ドル)
  • Power BI Gateway サーバーにインストールされた NetSuite ODBC ドライバー
  • NetSuite の「SuiteAnalytics Connect」権限を持つロール

セットアップ手順:

  1. NetSuite アカウントから NetSuite ODBC ドライバーをダウンロードします (セットアップ → SuiteAnalytics → ODBC → ドライバーのダウンロード)
  2. オンプレミス データ ゲートウェイ サーバーにインストールする
  3. ODBC システム DSN を作成します。
  • データソース名: NetSuite_Prod
  • ホスト: {AccountID}.connect.api.netsuite.com
  • ポート: 1708
  • データベース: NetSuite
  1. Power BI Desktop で: データの取得 → ODBC → NetSuite_Prod DSN の選択
  2. 資格情報を入力します: NetSuite の電子メール + パスワード (または役割固有のトークン認証)

SuiteAnalytics テーブルの例:

ネットスイートレコードODBC テーブル主要なフィールド
取引コード0コード1
トランザクションラインコード0コード1
アカウントコード0コード1
お客様コード0コード1
アイテムコード0コード1
従業員コード0コード1
子会社コード0コード1
予算コード0コード1

方法 2: CSV エクスポートによる NetSuite 保存済み検索

SuiteAnalytics Connect を使用していない組織の場合、保存された検索をスケジュールして、CSV ファイルを共有フォルダーまたはクラウド ストレージにエクスポートできます。

  1. NetSuite で必要なフィールドを使用して保存済み検索を作成します。
  2. CSV を SharePoint/Azure Blob/SFTP にエクスポートするように NetSuite SuiteScript 2.0 スクリプトをスケジュールします。
  3. Power BI はコネクタ経由でスケジュールに従って CSV ファイルを読み取ります

制限事項: リアルタイム データはありません。更新はエクスポート スケジュールに依存します。大規模なデータセットには適していません (NetSuite エクスポート制限が適用されます)。

方法 3: RESTlet の統合

Custom SuiteScript 2.0 RESTlet は、REST API 経由で NetSuite データを公開します。 Power BI の Web コネクタは JSON 応答を取得します。

  1. RESTlet を NetSuite にデプロイします (SuiteScript 2.0)。
// RESTlet example — fetch GL transactions
define(['N/search', 'N/format'], (search, format) => {
    const get = (context) => {
        const results = [];
        const s = search.create({
            type: search.Type.TRANSACTION,
            filters: [['type', 'anyof', 'Journal'], 'AND',
                      ['trandate', 'within', context.start, context.end]],
            columns: ['trandate', 'account', 'debit', 'credit', 'memo']
        });
        s.run().each(r => {
            results.push({
                date: r.getValue('trandate'),
                account: r.getText('account'),
                debit: r.getValue('debit'),
                credit: r.getValue('credit')
            });
            return true;
        });
        return results;
    };
    return { get };
});
  1. Power BI で、RESTlet URL + TBA (トークンベース認証) ヘッダーを持つ Web コネクタを使用します。

方法 4: サードパーティのコネクタ

いくつかのサードパーティ コネクタにより、NetSuite → Power BI の統合が簡素化されます。

コネクタプロバイダー価格特長
CData Power BI コネクタCData$400/年ODBC フリー、300 以上のレコード タイプ
ファイブトランファイブトラン使用量ベース自動パイプライン、dbt モデル
ステッチステッチ月額 $100 からシンプルなパイプライン、14 以上の NS テーブル
レイヤ 2 クラウド コネクタレイヤー2$400/年SharePoint の統合

大量の財務データを処理する本番環境の場合、データ ウェアハウス仲介者 (Snowflake、BigQuery) を備えた Fivetran または Stitch が、最も信頼性の高いアーキテクチャを提供します。


NetSuite Analytics のデータ モデル設計

財務分析用のスター スキーマ

NetSuite のリレーショナル モデルは、Power BI のスター スキーマにマップされます。

Fact: GL_Transactions
    ├── Dim: Account (account number, name, type, category)
    ├── Dim: Date (year, quarter, month, fiscal period)
    ├── Dim: Customer/Vendor (entity)
    ├── Dim: Subsidiary
    ├── Dim: Department
    ├── Dim: Location
    └── Dim: Class

Power Query SQL を使用して GL トランザクション ファクト テーブルを構築します。

SELECT
    TL.TRANSACTION as transaction_id,
    T.TRANDATE as transaction_date,
    T.TYPE as transaction_type,
    T.MEMO as memo,
    TL.ACCOUNT as account_id,
    A.ACCTNUMBER as account_number,
    A.ACCTNAME as account_name,
    A.ACCTTYPE as account_type,
    TL.DEBIT as debit_amount,
    TL.CREDIT as credit_amount,
    TL.DEBIT - TL.CREDIT as net_amount,
    T.SUBSIDIARY as subsidiary_id,
    T.DEPARTMENT as department_id,
    T.CLASS as class_id,
    T.ENTITY as entity_id
FROM TRANSACTIONLINE TL
JOIN TRANSACTION T ON TL.TRANSACTION = T.ID
JOIN ACCOUNT A ON TL.ACCOUNT = A.ID
WHERE T.VOID = 'F'
    AND T.TRANDATE >= DATEADD('year', -3, CURRENT_DATE)

Power BI の NetSuite 会計カレンダー

NetSuite は、暦年と一致しない可能性があるカスタム会計年度をサポートします。 NetSuite の会計期間と一致する Power BI 日付テーブルを作成します。

// Date table with NetSuite fiscal year (example: April start)
Date =
VAR FiscalYearStartMonth = 4  -- April
RETURN
ADDCOLUMNS(
    CALENDAR(DATE(2020,1,1), DATE(2026,12,31)),
    "Year", YEAR([Date]),
    "Month", MONTH([Date]),
    "Month Name", FORMAT([Date], "MMMM"),
    "Quarter", "Q" & ROUNDUP(MONTH([Date])/3, 0),
    "Fiscal Year",
        IF(MONTH([Date]) >= FiscalYearStartMonth,
           "FY" & YEAR([Date]) + 1,
           "FY" & YEAR([Date])
        ),
    "Fiscal Quarter",
        "FQ" & SWITCH(TRUE(),
            MONTH([Date]) >= FiscalYearStartMonth &&
            MONTH([Date]) < FiscalYearStartMonth + 3, 1,
            MONTH([Date]) >= FiscalYearStartMonth + 3 &&
            MONTH([Date]) < FiscalYearStartMonth + 6, 2,
            MONTH([Date]) >= FiscalYearStartMonth + 6 &&
            MONTH([Date]) < FiscalYearStartMonth + 9, 3,
            4
        )
)

財務 KPI と DAX 式

収益と損益の測定

// Total Revenue (Income accounts, credit balance)
Total Revenue =
CALCULATE(
    SUMX(GL_Transactions, [credit_amount] - [debit_amount]),
    Account[account_type] = "Income"
)

// Total COGS
Total COGS =
CALCULATE(
    SUMX(GL_Transactions, [debit_amount] - [credit_amount]),
    Account[account_type] = "Cost of Goods Sold"
)

// Gross Profit
Gross Profit = [Total Revenue] - [Total COGS]

// Gross Margin %
Gross Margin % = DIVIDE([Gross Profit], [Total Revenue], 0)

// Operating Expenses
Total OpEx =
CALCULATE(
    SUMX(GL_Transactions, [debit_amount] - [credit_amount]),
    Account[account_type] IN {"Expense", "Other Expense"}
)

// EBITDA
EBITDA =
[Gross Profit] - [Total OpEx] +
CALCULATE(
    SUMX(GL_Transactions, [debit_amount] - [credit_amount]),
    Account[account_name] IN {"Depreciation", "Amortization"}
)

前年比および期間比較

// Prior Year Revenue
Prior Year Revenue =
CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(Date[Date]))

// YoY Revenue Growth %
Revenue YoY Growth =
DIVIDE([Total Revenue] - [Prior Year Revenue], [Prior Year Revenue], 0)

// Year-to-Date Revenue
YTD Revenue =
CALCULATE([Total Revenue], DATESYTD(Date[Date], "3/31"))  -- Fiscal year end

// Budget vs Actual Variance
Revenue Variance =
[Total Revenue] - CALCULATE(SUM(Budget[amount]), Budget[account_type] = "Income")

// Rolling 12-Month Revenue
Rolling 12M Revenue =
CALCULATE(
    [Total Revenue],
    DATESINPERIOD(Date[Date], LASTDATE(Date[Date]), -12, MONTH)
)

売掛金と現金の KPI

// Days Sales Outstanding (DSO)
DSO =
DIVIDE(
    CALCULATE(SUM(AR_Aging[balance]), AR_Aging[status] = "Open"),
    DIVIDE([Total Revenue], 365),
    0
)

// Accounts Receivable Balance
AR Balance =
CALCULATE(
    SUM(GL_Transactions[debit_amount]) - SUM(GL_Transactions[credit_amount]),
    Account[account_type] = "Accounts Receivable"
)

// Cash Balance
Cash Balance =
CALCULATE(
    SUM(GL_Transactions[debit_amount]) - SUM(GL_Transactions[credit_amount]),
    Account[account_type] = "Bank"
)

CFO ダッシュボードのレイアウト

NetSuite に接続された Power BI CFO ダッシュボードには通常、次のページが含まれます。

ページ 1: 概要

  • 収益 YTD 対予算 (ゲージ + 差異 %)
  • 粗利益率 (目標ラインを含むゲージ)
  • EBITDA (当月 + 過去 12 か月のスパークライン)
  • 現金残高(銀行口座の概要)
  • AR 経過時間の概要 (棒グラフ: 現在、30 日、60 日、90 日以上)
  • 売上高トップ 10 の顧客 (表)

ページ 2: 損益計算書 (P&L)

  • 列を含む月次損益表: 実績、予算、差異 $、差異 %
  • 収益ウォーターフォール チャート (事業単位/子会社別)
  • 経費の内訳(カテゴリ別のドーナツグラフ)
  • 収入と支出の推移(12か月の折れ線グラフ)

ページ 3: 貸借対照表

  • 選択した期間の資産、負債、資本
  • 運転資本の推移(折れ線グラフ)
  • 流動比率ゲージと当座比率ゲージ

ページ 4: キャッシュ フロー

  • 営業、投資、財務のキャッシュ フローのウォーターフォール
  • 現金滑走路予測(線形予測)
  • 銀行口座残高の推移

ページ 5: 子会社のドリルダウン

  • 子会社別売上高(ドリルダウン付きマトリックス)
  • 会社間消去ビュー
  • 為替換算の影響

よくある質問

NetSuite で Power BI を使用するには SuiteAnalytics Connect が必要ですか?

いいえ、ただし、これは最も堅牢でサポートされているオプションです。代替手段には、保存された検索の CSV エクスポート、サードパーティのコネクタ (CData、Fivetran)、またはカスタム RESTlet が含まれます。 SuiteAnalytics Connect はユーザーあたり年間 2,399 ドルで、小規模チームにとっては高価であるため、予算重視の組織にとってはサードパーティ コネクタ (月額 100 ドルから) が魅力的です。

NetSuite から Power BI にデータを更新できる頻度はどれくらいですか?

Power BI Premium 上の ODBC 経由の SuiteAnalytics Connect は、1 日あたり最大 48 回 (30 分ごと) の更新をサポートします。 Power BI Pro は 1 日あたり 8 回の更新をサポートします。 RESTlet ベースの統合は、Power Automate 経由で任意のスケジュールで更新をトリガーできます。ほぼリアルタイムの財務ダッシュボードの場合は、Premium で 30 分の更新を構成するか、特定の KPI にストリーミング データセットを使用します。

Power BI は NetSuite の複数子会社の連結財務情報を表示できますか?

はい。これは、NetSuite の組み込みレポートに対する Power BI の重要な利点の 1 つです。すべての子会社にわたる子会社ディメンションと財務データをクエリし、DAX で連結ロジックを構築します (すべての子会社を合計し、消去勘定を介して会社間取引を除外します)。通貨換算では、NetSuite の為替レート テーブルまたは外部為替レート フィードを使用できます。

Power BI で NetSuite カスタム フィールドを処理するにはどうすればよいですか?

SuiteAnalytics Connect は、カスタム フィールドを CUSTBODY_FIELD_NAME (本体レベルのカスタム フィールド) や CUSTCOL_FIELD_NAME (行レベル) のような名前の列として公開します。 SQL で直接クエリを実行します。 RESTlet 統合は、内部フィールド ID を使用して検索 API 経由でカスタム フィールドを公開します。 Power BI クエリを構築する前に、NetSuite でカスタム フィールド ID を文書化します ([セットアップ] → [カスタマイズ] → [リスト、レコード、およびフィールド])。

大規模な NetSuite 導入に最適なアーキテクチャは何ですか?

トランザクション量が多い (100 万以上の GL 行) 組織の場合、推奨されるアーキテクチャは次のとおりです: NetSuite → Fivetran/Stitch → Snowflake/BigQuery → Power BI (DirectQuery または Direct Lake)。これにより、NetSuite からデータが段階的に抽出され、分析用に最適化されたクラウド ウェアハウスに保存され、NetSuite の ODBC レイヤーに繰り返しアクセスすることなく Power BI に接続されます。 Fivetran の NetSuite コネクタは、スキーマの変更と削除されたレコードを自動的に処理します。


次のステップ

NetSuite には最も重要な財務データが含まれており、Power BI はそのデータを、経営陣が必要とする CFO ダッシュボード、差異分析、子会社の統合に変換できます。 ECOSIRE は、NetSuite の専門知識と Power BI 開発を組み合わせて、手動の Excel レポートに代わる財務ダッシュボードを構築します。

当社の Power BI ERP 統合サービス または 会計および財務分析サービス を調べて、NetSuite + Power BI の実装へのアプローチ方法を理解してください。 NetSuite 環境とレポート目標に焦点を当てたディスカバリ コールについては、当社のチームにお問い合わせください

E

執筆者

ECOSIRE Research and Development Team

ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。

WhatsAppでチャット