shuzi

Shuzi · セルフサービス BI

データを、梳かして整える。

いくつものソース、いくつもの定義、いくつものレポートを、ひとつに梳かし整える。データには版が、指標には定義が、答えには出どころが、権限には境界があります。

乱れているのは、ソース。乱れてはいけないのは、定義。

  • 1 セットの指標定義を、レポート・AI・API で共有
  • 10 種類のデータベースに接続可能。ファイルアップロードと API 取得にも対応
  • 1 か所行レベル権限を実施する場所。誰も迂回できない

プロダクトツアー

ノートブックで書き、
チャットで尋ね、
アプリで共有する。

入口は三つ、下にあるのは同じセマンティックレイヤー。どこから入っても、同じ定義、同じ権限、同じ数字です。

notebook · retail_q3サンプルデータ

SQL

-- 第3四半期のカテゴリ別売上(確定注文のみ)
SELECT category,
       SUM(amount) AS revenue
FROM orders
WHERE status = 'confirmed'
  AND quarter = 'Q3'
GROUP BY category
ORDER BY revenue DESC

5 行 · 完了

結果

カテゴリ売上前期比
衣料454万+3.9%
ホーム448万+8.2%
家電304万-1%
コスメ270万+1.9%
食品213万+6%

チャート

カテゴリ別売上

  • 454衣料
  • 448ホーム
  • 304家電
  • 270コスメ
  • 213食品

制限付きの SQL サンドボックスで実行され、読み取りを許可されたテーブルだけを対象にします。

agent · retail_modelサンプルデータ

ふつうの言葉で質問してください。Agent がセマンティックレイヤーを読み、手順を見せ、答えをグラフにします。

地域と四半期ごとの売上を、カテゴリで積み上げて比べて。

  1. cube_list_models1 モデル
  2. cube_get_metadataretail_model
  3. cube_queryrevenue × region × quarter

権限のあるデータのみ

3 つの地域すべてで、売上は四半期ごとに伸びています。最大は東部、全地域で首位なのは衣料、唯一減っているカテゴリは家電です。

地域・四半期・カテゴリ別の売上
0200400600800Q1Q2Q3東部Q1Q2Q3南部Q1Q2Q3北部
  • 衣料
  • ホーム
  • コスメ
  • 家電
  • 食品
app · retail_overview公開済み
サンプルデータ
売上
1689万
+4.0% 前四半期比
売上トップのカテゴリ
衣料
最も伸びたカテゴリ
ホーム

カテゴリ別売上

  • 衣料454万
  • ホーム448万
  • コスメ270万
  • 家電304万
  • 食品213万

チャネル構成 · 衣料

  • オンライン58%
  • 店舗30%
  • 卸12%

行レベルの権限は、閲覧者全員に適用されます。

架空の小売企業のサンプルデータによるイメージ画面です。実データには接続しておらず、実際の AI も呼び出していません。

オフィスでよく聞く声

  • この数字、どうして経理の数字と合わないの?
  • 先月のレポートを、当時のデータのまま出し直せる?
  • あの人に、そのテーブルの権限を誰が与えたの?
  • 数字をひとつ見たいだけなのに、またデータチームの順番待ち。
  • AI が出した数字、そのまま使っていいの?
  • レポートが何版にもなって、どれが正しいか誰も言えない。

01 · 定義

ひとつの言葉、
三つの数字。

経理は認識済み売上、営業は受注額、オペレーションは入金額で数えます。それぞれが自分のレポートと自分の SQL を持ち、週次会議は突合の場になります。

経理売上

1,203,400.00

SUM(recognized_amt)認識済み売上の基準
営業売上

1,318,950.25

SUM(order_amt)受注額の基準
オペレーション売上

1,176,280.40

SUM(cash_received)入金額の基準
revenue = SUM(amount) WHERE status = 'confirmed'3 つの最大差額 142,669.85

サンプルデータ。定義を共有すると、レポート・AI アシスタント・API はすべて同じ定義を読みます。

02 · 5 つの動き

ソースから答えまで、
5 つの動き。

どの段階にも版があり、定義があり、記録があります。それは約束ごとではなく、構造によるものです。

01 / 05 · 取り込み

先月のレポートを、当時のデータのまま出し直せる?

どんなに雑多なソースも、
同じ形に収める。

データベース、API、アップロードしたファイルを、ワークフローで取得・変換・マージし、版付きの不変スナップショットとして保存します。更新のたびに新しい版ができ、問題があれば前の版に戻せます。

  • ワークフローで取得取得と変換を視覚的に組み立てます。ソースをまたぐデータは、まず管理されたスナップショットに同期してから、あわせて分析します。
  • 不変の版公開したスナップショットは変更されません。追跡も巻き戻しもでき、参照中の版が誤って削除されることもありません。
  • 読み書きの分離書き込むのはスケジューラだけ。クエリは読み取り専用のレプリカを使います。API が知らないうちにデータを変えることはありません。
詳しく見る
workflow · revenue_dailyサンプルデータ

ソース

  • PostgreSQL
  • SQL Server
  • REST API
  • CSV · XLSX

ワークフロー

  1. 01取得
  2. 02変換
  3. 03主キーでマージ

スナップショット

  • v13parquet 不変
  • v12parquet
  • v11parquet

snapshot v13 · parquet · immutable

02 / 05 · モデル

この数字、どうして経理の数字と合わないの?

定義は、一度だけ。

キャンバス上でテーブル、結合、ディメンション、メジャーをセマンティックモデルに組み立て、検証して公開します。レポート、AI アシスタント、オープン API は同じ定義を読むので、自己流の集計は生まれません。

  • ビジュアルモデリングテーブル、結合、ディメンション、メジャーをキャンバスで構築。必要なときはネイティブ定義も確認できます。
  • 下書きから公開へまず検証し、次に全体を新しいリビジョンとして公開します。過去の定義が書き換えられることはありません。
  • 統一された計算定義レポート、AI アシスタント、公開 API は同じセマンティックモデルで計算し、結果を検証できます。
詳しく見る
semantic_model · valuationサンプルデータ
valuationsrevenue · count
funds
regions
calendar
products
measures:
  - name: revenue
    type: sum
    sql: amount
    filters:
      - sql: "{CUBE}.status = 'confirmed'"       

ref(revenue)

  • レポート
  • AI アシスタント
  • API
  • PG ポート
  • MCP

revenue = SUM(amount) WHERE status = 'confirmed'

03 / 05 · 探索

数字をひとつ見たいだけなのに、またデータチームの順番待ち。

現場が自分でクリック。
アナリストは行列から解放。

公開済みのモデルで、ディメンションを選び、メジャーをドラッグし、グラフを切り替え、絞り込みを加える。数字の裏にある理由は、ワンクリックで見えます。

  • ドラッグで探索ディメンション、メジャー、グラフの種類を自由に切り替え、結果はすぐに更新されます。
  • ドリルと絞り込み合計から明細へ。絞り込み条件はグラフと一緒に保存されます。
  • アナリストには SQLデータ準備では SQL を書けます。ただし結果は管理されたテーブルとして保存して初めて、レポートで使えます。
詳しく見る
explore · revenue_modelサンプルデータ

ディメンション

メジャー

売上

view → members → query → chart

04 / 05 · 質問

AI が出した数字、そのまま使っていいの?

データに聞く。
答えには出どころがある。

自然な言葉で質問できます。アシスタントはセマンティックレイヤー経由でのみデータに触れます。モデル一覧、メタデータの読み取り、クエリ実行。すべての手順が見え、質問した本人の権限で実行されます。

  • 手順が見えるどのツールを使い、どのメンバーを問い合わせたか。すべて見えて、検証できます。
  • 同じ権限の境界あなたに見えないモデルや行は、アシスタントにも見えません。
  • モデルサービスは選べる管理者が OpenAI 互換のプロバイダー、モデル、キーを設定します。キーは暗号化して保存されます。
詳しく見る
ask · revenue_modelサンプルデータ

どの地域の売上が大きい?

  1. cube_list_models1 モデル
  2. cube_get_metadatarevenue_model
  3. cube_queryrevenue × region

権限のあるデータのみ

サンプル回答:北部の売上が大きい。地域と四半期を選ぶと、範囲ごとのサンプル結果を確認できます。

北部
1,003,000.00
南部
666,000.00

cube_list_models → cube_get_metadata → cube_query

05 / 05 · 公開

レポートが何版にもなって、どれが正しいか誰も言えない。

変更には痕跡を。
どの版にも戻れる。

グラフがダッシュボードになり、下書きは自動保存され、公開すると不変の版が確定します。壊れたら、過去のどの版にも復元できます。環境間の移行は YAML にエクスポートして行います。

  • 自動保存の下書き編集内容はサーバーに自動保存され、別のマシンでも続きから作業できます。
  • 公開と復元公開すると履歴版が確定します。復元では、まず現在の下書きを退避してから、選んだ版に戻します。
  • コードとしてのレポートグラフとダッシュボードは YAML にエクスポートできます。まとめて検証・取り込みを行い、失敗すれば全体がロールバックされます。
詳しく見る
valuation.dashboard.ymlサンプルデータ
valuation公開済み · v7自動保存済み
売上合計1,669,000.00

版

  • v7現在
  • v6·
  • v5·

↺ 復元: v6

⇣ YAML をエクスポート

dashboard.yml · version 1 · dry-run → apply

03 · データの構造

五つの層、
事実の源はひとつ。

元データから画面上の答えまで、各層の役割と境界はひとつだけ。層を選んで、そこに何があるか見てみましょう。

  • 人が触れるものは、すべて下の層を読み、迂回しません。ノートブック、Agent、ダッシュボード、データアプリ、JSON API、MCP、PG ポートは、同じ入口を通ります。

    • ノートブックと SQL
    • Agent チャット
    • ダッシュボードとアプリ
    • API · MCP · PG ポート
  • 行レベルの権限は、ただ一か所で適用されます。判断できないときは、通さずにクエリを拒否します。

    • 適用箇所はひとつ
    • 迷ったら拒否
    • どこでも同じ行
  • 売上は絞り込み条件ごと一度だけ定義され、すべてのグラフ・回答・API 呼び出しが再利用します。公開済みモデルは読み込むスナップショットを固定するので、クエリの途中で新旧のデータが混ざることはありません。

    • ディメンション
    • メジャー
    • 結合
    • スナップショット固定
  • 更新のたびに新しい変更不可のバージョンが書き込まれ、その場での上書きはありません。書き込むのはスケジューラだけで、ほかはすべて読み取り専用です。

    • 変更不可
    • Parquet
    • 主キー必須
  • 10 種類のデータベースに接続し、ファイルをアップロードし、API から取得できます。ワークフローが抽出・変換・マージをスケジュール実行します。

    • 10 種類のデータベース
    • CSV · Excel
    • API 取得
    • 定時ワークフロー

概念図です。層の名前は製品のアーキテクチャを簡略化したものです。

04 · AI が作る

言葉にすれば、
動くアプリが手に入る。

見たいものを Agent に伝えてください。セマンティックレイヤーを読み、単一ファイルのデータアプリを書いて、その場でプレビューします。確認したら、データアプリとして保存します。

地域とカテゴリ別の売上ダッシュボードを作って。

app · sales_overviewAgent が生成

売上の概要

1689万売上 · Q3 · サンプルデータ

045090013501800Q1Q2Q3全地域
  • 衣料
  • ホーム
  • コスメ
  • 家電
  • 食品
サンドボックス · あなたの権限

値上げ・値下げを試して、売上と粗利がどうなるか見たい。

app · price_whatifAgent が生成

価格シミュレーション

売上
474万
+22万
粗利率
62.8%
+1.8

売上予測

今日
サンドボックス · あなたの権限

登録月ごとの顧客の継続率を見せて。

app · retentionAgent が生成

継続率

コホートと月別の継続率

サンドボックス · あなたの権限

顧客ごとに売上と成長をプロットして、外れ値に印を付けて。

app · account_mapAgent が生成

顧客マップ

売上 →↑ 成長外れ値
サンドボックス · あなたの権限

架空の小売企業のサンプルデータによるイメージです。生成されたアプリはネットワークに接続できないサンドボックスで動き、ホストを通じて、あなたの権限でデータを読み取ります。

05 · ガバナンス

同じテーブルでも、
人によって見える行は違う。

認証、スペースの認可、行レベル権限、監査。何層にも絞り込みます。行レベル権限はセマンティックレイヤーで一度だけ実施され、レポート、AI アシスタント、API、PG ポートに同じように適用されます。判定が得られなければ、許可ではなく拒否します。

試す:身元を切り替える

サインイン中のユーザー
投資先企業地域評価額
星河一号東部1,284,500.00
雲杉アセット東部963,200.50
瀾湾エナジー南部752,100.00
北辰パーク北部1,438,700.25
海棠ファンド南部612,000.00
松渓ソーラー東部884,000.00
遠岫ロジスティクス北部523,300.00
朗潤テック南部709,800.00
青禾アグリ北部381,600.75

表示される行 9 / 9

フィルター — (no filter)

合計 7,549,201.50

4 つの入口、同じ結果

  • レポート7,549,201.50
  • AI アシスタント7,549,201.50
  • API7,549,201.50
  • PG ポート7,549,201.50
  1. 01

    認証

    アカウントと OIDC によるサインイン。データに触れる前に、まず本人を確認します。

  2. 02

    スペースとリソースの認可

    資産は個人またはチームのスペースに属し、フォルダやリソースはメンバーに付与します。

  3. 03

    行レベル権限

    権限テーブルが各人に見える行を決め、セマンティックレイヤーで一度だけ実施されます。

  4. 04

    監査

    主要な操作は記録され、誰がいつ何をしたかを調べられます。

  • SQL はサンドボックスで

    SQL コンソールは制限付きの DuckDB サンドボックスで実行され、外部ファイルへのアクセスは無効です。

  • 外向き通信にもポリシー

    ワークフローや接続からの外向きリクエストは、すべてグローバルな外部アクセスポリシーに従います。

  • AI もあなたと同じ権限

    アシスタントは質問した本人として問い合わせ、それ以上の権限は引き継ぎません。

06 · オープン性

取り込みやすく、
持ち出しやすい。

ネイティブ JSON API、MCP、PG プロトコルのポート、そして YAML 形式のグラフとダッシュボード。データも定義も、画面の中に閉じ込めません。

データソース

  • PostgreSQL
  • MySQL
  • Oracle
  • SQL Server
  • ClickHouse
  • Doris · StarRocks
  • ファイル · API 取得

Cube Core

  1. データモデリングディメンション・メジャー・結合・ビューを一度だけ定義
  2. アクセス制御行権限の適用点は 1 つ、公開はビューのみ
  3. スナップショット固定各クエリは不変のデータバージョンを読む
  4. オープン APIJSON API · MCP · PG ポート

セマンティックレイヤー

利用側

  • ダッシュボードとデータアプリワークスペース内
  • AI エージェントMCP
  • 外部システムJSON API
  • BI ツールと ExcelPG ポート · Power Query
イメージ図です。PG ポートは管理者がデプロイ時に公開し、社内ネットワーク限定です。Excel は Power Query で JSON API を呼ぶか CSV を取り込みます。Cube Core 自体に Excel 直接接続はありません。
POST /api/v1/query
Authorization: Bearer <token>

{
  "model_id": "valuation",
  "view": "asset_view",
  "query": {
    "measures": ["asset_view.revenue"],
    "dimensions": ["asset_view.region"],
    "order": [["asset_view.revenue", "desc"]],
    "limit": 100
  }
}

// → { "data": [ … ], "release_id": "…", "snapshot_set_id": "…" }

ネイティブの JSON クエリ。結果には公開バージョンとスナップショットの識別子が付きます。

対応データベース

  • PostgreSQL
  • MySQL
  • Oracle
  • SQL Server
  • ClickHouse
  • TiDB
  • Doris
  • StarRocks
  • KingbaseES
  • DuckDB

ほかに CSV / XLSX のアップロードと API 取得に対応。

データベース接続は SSH 踏み台と相互 TLS に対応

07 · 誰が使うか

ひとつのプラットフォームで、
3 つの役割が必要なものを得る。

ビジネスチーム

  • 以前データチームが数字を出すのを待つ

    現在公開済みモデルを自分で探索する

  • 以前数字の出どころを説明できない

    現在AI の回答にツールの手順と定義がつく

  • 以前レポートごとに数字が違う

    現在共通の指標定義を使う

詳しく見る

データチーム

  • 以前レポートごとに SQL が一本

    現在準備は一度、モデリングも一度、公開も一度

  • 以前手作業の更新で、エラーが追いにくい

    現在ワークフローで更新し、毎回新しい版ができる

  • 以前定義を変えると全部壊れそうで怖い

    現在下書きで検証し、新しいリビジョンとして全体を公開

詳しく見る

IT と経営層

  • 以前権限は慣習とチャット頼み

    現在スペースの認可と行レベル権限を、一か所で実施

  • 以前エクスポートとスクリーンショットが氾濫

    現在取得は認可された API を通り、操作は監査される

  • 以前AI が権限を越えないか心配

    現在AI は質問者と同じ権限、手順も確認できる

詳しく見る

よくある質問

Shuzi とは何ですか?

Shuzi は、データの取り込み、準備、セマンティックモデリング、分析、公開をひとつの流れにつなぎ、チームが共通の指標定義で働けるようにします。

SQL を知っている必要はありますか?

ビジネス側のユーザーは、公開済みのレポート、探索画面、AI アシスタントを使えます。アナリストはデータ準備の段階で SQL を使えます。

AI は、見る権限のないデータを見られますか?

いいえ。アシスタントは質問した本人として、同じ認可と行レベル権限を通して問い合わせます。

他のツールからも問い合わせられますか?

はい。公開済みのモデルは JSON API、MCP、PG ポートから利用できます。実際のアクセスには認証と認可が必要です。

このサイトのデータは本物ですか?

いいえ。このサイトでは、ローカルのサンプルデータと定型の回答のみを使っています。実データはサインイン後、あなたの権限の範囲で利用できます。

データを、乱れから整いへ。

まずはサンプルで試して、次にご自身のデータで。