Cloud Service
Azure Analysis Services
BI 向けの表形式セマンティックモデルをクラウドで提供する。Azure Analysis Services なら集計済みデータを高速に返せ、SQL Server Analysis Services の表形式モードをマネージドにした分析エンジン。
- 1.BI レポートの裏側で使う表形式(Tabular)セマンティックモデルのマネージドエンジン。
- 2.列指向のインメモリ(VertiPaq)でメジャーや集計を低レイテンシに返す。
- 3.SQL Server Analysis Services(SSAS)の表形式モードをクラウドに移したサービス。
解決する課題
Azure Analysis Services(AAS)は、データウェアハウスやデータマートの上に「セマンティックモデル(意味のあるビジネスモデル)」を構築し、BI ツールから一貫した定義で高速にクエリできるようにするマネージド分析エンジンです。SQL Server Analysis Services(SSAS)の表形式(Tabular)モードを、サーバー管理なしで利用できる形にしたものと考えると理解しやすくなります。
- レポートごとにバラバラだった 集計やビジネス指標(メジャー)の定義を1か所に集約したい
- ダッシュボードの操作(ドリルダウンやスライス)に対して 数百ミリ秒で集計結果を返したい
- 複数の BI ツールやユーザーに対して 同じ「正しい数字」の定義を共有したい
- 列レベル・行レベルでユーザーごとに 見える範囲を制御したい
主要概念と用語
- 表形式モデル(Tabular モデル): テーブル・列・リレーションシップ・メジャーで構成される BI 向けのモデル。AAS が扱う中心的なモデル形式
- セマンティックモデル: 物理的なテーブルにビジネス上の意味(指標名・集計ロジック・階層)を与えた層。レポートはこの層に問い合わせる
- メジャー(Measure): 売上合計や前年比などの集計値の定義。DAX 式で記述する
- DAX(Data Analysis Expressions): メジャーや計算列を定義する数式言語。フィルタコンテキストに応じて集計を評価する
- VertiPaq(xVelocity): 列指向でデータをインメモリ圧縮して保持するストレージエンジン。インポートモデルの高速さの源
- インポートモードと DirectQuery: データをモデルに取り込んで保持するインポートと、クエリのたびに元データソースへ問い合わせる DirectQuery の2方式がある
- 処理(プロセス / Process): 元データを読み込み、モデルへ反映(更新)する操作。フルとインクリメンタルがある
- パーティション: 大きなテーブルを分割する単位。更新対象を絞ってインクリメンタル処理を効率化する
- ロール(Role): モデルへのアクセス権の単位。行レベルセキュリティ(RLS)もロール単位で定義する
仕様・制限・クォータ
- AAS は表形式モデルのみを扱う。SSAS にあった多次元(Multidimensional)モードや MDX 中心のキューブは対象外で、表形式と DAX が前提となる
- 価格レベルは開発向けと本番向けに分かれる。本番向けの上位レベルほど割り当てメモリと QPU(クエリ処理ユニット)が大きく、扱えるモデルサイズと同時実行が増える
- インポートモデルはメモリに収まる必要がある。圧縮後のモデルサイズが割り当てメモリを超えないよう、列の選別やパーティション設計で抑える
- サーバーの一時停止 / 再開ができる。停止中はコンピューティング課金が止まる(一般的な目安として、停止中は処理もクエリも不可)
- 同時実行クエリ数や処理のスループットには上限があり、価格レベルとモデル設計に依存する。具体的な数値は変動するため公式ドキュメントで確認する
インポートモードは VertiPaq の圧縮とインメモリ集計で最も高速ですが、データ鮮度はモデルの更新タイミングに依存します。常に最新が必要、またはデータが大きくてメモリに収まらない場合に DirectQuery を検討し、応答性能とのトレードオフを意識して選びます。
内部の仕組み
AAS の表形式モデル(インポートモード)は、データを VertiPaq エンジンが列指向で圧縮しインメモリに保持します。列ごとに辞書エンコードやランレングス圧縮を適用するため、ディスク上の元データよりはるかに小さくなり、集計時はメモリ上の列を高速にスキャンして合計や平均を求めます。クエリは DAX で評価され、フィルタコンテキスト(スライサーやドリルダウンで絞られた条件)に応じてメジャーが再計算されます。
- インポートモードは元データを取り込み、VertiPaq で圧縮保持する。最も低レイテンシだが、鮮度は処理(更新)の頻度に依存する
- DirectQuery モードはデータを保持せず、クエリのたびに元のデータソース(例: SQL)へ問い合わせる。鮮度は高いが、応答は元データソースの性能に左右される
- **処理(プロセス)**で元データを読み直してモデルを更新する。テーブルをパーティションに分け、変化した期間だけを インクリメンタルに処理すると更新コストを抑えられる
- メジャーは保存値ではなくクエリ時に評価されるため、DAX の書き方とモデルのリレーション設計が応答性能を大きく左右する
この「集計済み・圧縮済みのセマンティックモデルを BI の裏で高速に返す」役割は、AWS では単一の同等サービスというより、Power BI のデータセット層に近い分析ストアを別建てで持つ構成にあたります。AAS 自体は SSAS 表形式モードのクラウド版という位置づけが最も正確です。
設計パターン / ベストプラクティス
- スター スキーマで設計する: ファクトテーブルとディメンションテーブルを明確に分け、リレーションをシンプルに保つと DAX も性能も安定する
- 不要な列・高カーディナリティ列を持ち込まない: VertiPaq の圧縮効率とメモリ使用量に直結する。とくに一意性の高い ID 列や自由テキストは注意する
- パーティションでインクリメンタル処理: 時系列のファクトを期間で分割し、最新期間だけを更新してフル処理を避ける
- メジャーは集約側に寄せる: レポート側で複雑な計算を繰り返すより、モデルにメジャーとして定義して再利用する
- DirectQuery は限定的に: 鮮度要件やサイズ制約がある部分だけに使い、ホットな分析はインポートで高速化する
運用・監視
- Azure Monitor / 診断設定でメトリクスとログを Log Analytics に送り、QPU 使用率・メモリ・処理時間・クエリ時間を継続監視する
- 処理(更新)の自動化は Azure Automation や Logic Apps、データ パイプラインからスケジュール実行し、失敗時に再実行・通知する
- 一時停止 / 再開のスケジュール化で、利用しない時間帯のコンピューティング課金を止める
- **スケールアウト(読み取りレプリカ)**を使うと、クエリ負荷の高い時間帯に同時実行を分散できる
- クエリが遅いときは、メモリ逼迫か、DAX の重さか、DirectQuery 側のデータソース性能かを切り分ける
AAS サーバーは稼働している間コンピューティング課金が続きます。検証用や夜間に使わないサーバーは一時停止のスケジュールを組み、放置による無駄なコストを避けます。停止中はクエリも処理もできない点に注意してください。
コスト
コストの主因は サーバーの価格レベル(割り当てメモリと QPU)と稼働時間です。停止可能なプロビジョンド型のため、稼働させた時間に対して課金されると考えると整理しやすくなります。具体的な料金は変動するため定性的に押さえます。
| コスト要因 | 効いてくる場面 | 抑え方 |
|---|---|---|
| 価格レベル | 割り当てメモリとQPUの大きさ | モデルサイズと同時実行に合わせ最小限に |
| 稼働時間 | サーバーが起動している時間 | 未使用時の一時停止をスケジュール化 |
| スケールアウト | 読み取りレプリカの台数 | 高負荷時間帯だけ台数を増やす |
| モデルサイズ | メモリ使用量と必要レベル | 列の選別と圧縮効率でサイズを縮小 |
検証や開発には開発向けの低価格レベルを使い、本番だけ上位レベルにすると無駄を抑えられます。本番でも、利用パターンに合わせた一時停止とスケールアウトの組み合わせがコスト最適化の中心になります。
セキュリティ
- Microsoft Entra ID 認証が前提で、ユーザーやサービスプリンシパルに対してロールで権限を割り当てる
- **行レベルセキュリティ(RLS)**をロール単位で定義し、ユーザーごとに見える行を絞る(例: 担当地域のデータだけを表示)
- データソースへの接続は マネージド ID を使い、資格情報のハードコードを避ける
- 保存データはサービス側で暗号化され、転送は TLS で保護される
- オンプレミスデータゲートウェイや VNet 連携で、閉域のデータソースへ安全に接続する
全ユーザーに同じロールを割り当て、機微なデータをそのまま見せてしまうのは NG です。Entra ID と RLS を組み合わせ、ロール単位で見える行を絞り込んで最小権限を徹底してください。
関連サービス・比較
AAS は SQL Server Analysis Services(SSAS)の表形式モードをクラウド化したものです。オンプレミスの SSAS と対応づけると、移行や使い分けの判断がしやすくなります。
| 観点 | Azure Analysis Services | SQL Server Analysis Services |
|---|---|---|
| 提供形態 | Azure のマネージドサービス | 自前で立てるサーバー製品 |
| 対応モデル | 表形式のみ | 表形式と多次元の両方 |
| スケール | 価格レベル変更とスケールアウト | ハードウェア増強で対応 |
| 停止・課金 | 一時停止で課金停止が可能 | 常時自前運用(サーバー前提) |
| クエリ言語 | DAX(MDX クライアントも可) | DAX / MDX |
| 認証 | Microsoft Entra ID | Active Directory など |
新規のセマンティックモデル構築では、Microsoft は Power BI Premium / Microsoft Fabric のデータセット(セマンティックモデル)への集約を案内しています。既存の AAS 資産は引き続き有効ですが、新規採用では要件に応じて Power BI / Fabric 側も比較検討するとよいでしょう。
ハンズオン / CLI例
# リソースグループを作成
az group create --name demo-rg --location japaneast
# Analysis Services サーバーを作成(開発向けの価格レベルを指定)
az resource create \
--resource-group demo-rg \
--name demoaas0628 \
--resource-type Microsoft.AnalysisServices/servers \
--location japaneast \
--properties '{}' \
--is-full-object \
--properties '{"sku": {"name": "D1", "tier": "Development"}}'
# サーバーを一時停止してコンピューティング課金を止める
az resource invoke-action \
--resource-group demo-rg \
--name demoaas0628 \
--resource-type Microsoft.AnalysisServices/servers \
--action suspend
# 利用再開時はサーバーを再開する
az resource invoke-action \
--resource-group demo-rg \
--name demoaas0628 \
--resource-type Microsoft.AnalysisServices/servers \
--action resume
Azure Service
Azure Analysis Servicesを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
分析
比較で見る軸
クラウド: Azure / カテゴリ: 分析 / 難易度: intermediate
導入後に効く点
列指向のインメモリ(VertiPaq)でメジャーや集計を低レイテンシに返す。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- 分析
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- performance / cost
判断チェックリスト
- 自社の用途が「分析 / performance」に近いか確認する。
- 強みである「BI レポートの裏側で使う表形式(Tabular)セマンティックモデルのマネージドエンジン。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。