【Azure】Blob Storage・Data Factory・SQL DB で構築するデータ分析基盤とPower BI 可視化手順

  • URLをコピーしました!
目次

はじめに

この記事では、Azure を利用してデータ基盤を構築し、可視化する手順について紹介します。具体的には、Azure Blob Storage に CSV データを格納し、Data Factory を用いて Azure SQL Database に取り込み、Power BI でレポートを作成する流れを解説します。

この記事でわかること
  • Azure を使った データ分析基盤 の基本アーキテクチャ(Blob → ADF → SQL → Power BI)
  • Data Factory によるデータコピー手順(GUI 操作で完結)
  • CSV データのアップロードから Power BI 可視化までの 一連の流れ

全体アーキテクチャ構成

今回のチュートリアルでは、Azure の主要なデータサービスを組み合わせて、生の CSV データから視覚的なレポートを作成するまでの一連のデータパイプライン(データ分析基盤)を構築します。

今回構築するデータパイプラインの流れ

構成するリソースとその役割は以下の通りです。データの流れ(左から右)に沿って順番に構築していきます。

Azure Blob Storage

データレイクの入り口です。今回は分析の元となる CSV ファイルの置き場として機能します。

Azure Data Factory(ADF)

データの抽出・変換・書き出しを担う ETL パイプラインです。GUI ベースで、Blob からデータベースへのデータコピージョブ(アクティビティ)を作成します。

Azure SQL Database

データの格納先(データウェアハウス:DWH)です。ADF によって運ばれてきたデータを保存し、分析ツールからのクエリに応答します。

Power BI

データの可視化(BI)ツールです。SQL Database に接続し、データをグラフや表にして直感的なダッシュボードを作成します。

STEP

Azure Blob Storage の準備

データの保存先となる「Azure Blob Storage」を利用するには、まず大枠となる「ストレージアカウント」を作成し、その中にデータを格納するフォルダの役割を持つ「コンテナ」を作成する必要があります。

ストレージアカウントとコンテナの作成

ストレージアカウントの作成

Azure Portal の検索窓で「ストレージ アカウント」と検索し、「+ 作成」をクリックします。以下の設定を入力して作成を進めてください。

  • リソースグループ: Test-RG (新規作成)
  • ストレージアカウント名: blobdemodata01 ※世界中で一意である必要があります。
  • 地域: Japan West (西日本) など、任意のリージョン
  • パフォーマンス: Standard
  • 冗長性: ローカル冗長ストレージ (LRS) ※テスト用なので最も安価なもので OK です

入力が完了したら、「作成」をクリックしてデプロイを完了させます。

コンテナの作成

デプロイが完了したら「リソースに移動」をクリックし、作成したストレージアカウントの管理画面を開きます。

  1. 左側のメニューから 「データ ストレージ」 > 「コンテナー」 を選択します。
  2. 画面上の 「+ コンテナー」 をクリックします。
  3. 名前を raw (未加工データを入れるという意味合い)として、「作成」をクリックします。

これでデータの受け皿が完成しました。

サンプルデータ(CSV)のアップロード手順

続いて、作成した raw コンテナに分析対象となるサンプルデータ(CSV ファイル)をアップロードします。今回は卓球の試合データ(demodata.csv)を使用します。

  1. 先ほど作成した raw コンテナをクリックして開きます。
  2. 画面上部の 「↑ アップロード」 をクリックします。
  3. 右側にアップロード用のパネルが表示されるので、PC 内の demodata.csv を選択します。
  4. 「アップロード」 ボタンをクリックします。

アップロードが完了し、コンテナ内の一覧にファイル名、サイズ、最終更新日時が正しく表示されていれば、STEP1 は完了です。

参考: demodata.csv
Rally,Server,Winner,ServeType,Outcome,Axis,SpinClass,Length,Course,Contact,Set,match_id,created_at,player,opponent
1,HANAKO,HANAKO,Reverse sidespin serve,Service ace,reverse-side,non-backspin,half-long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
2,HANAKO,HANAKO,Reverse sidespin serve,Service ace,reverse-side,non-backspin,half-long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
3,TARO,TARO,Vertical-spin serve,Receive error (self),vertical,non-backspin,long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
4,TARO,TARO,Vertical-spin serve,Third-ball point (opponent),vertical,non-backspin,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
5,HANAKO,TARO,Reverse sidespin serve,Rally lost,reverse-side,non-backspin,long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
6,HANAKO,HANAKO,Reverse sidespin serve,Rally won,reverse-side,non-backspin,long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
7,TARO,HANAKO,Vertical-spin serve,Rally won,vertical,backspin-type,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
8,TARO,TARO,Vertical-spin serve,Rally lost,vertical,backspin-type,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
9,HANAKO,HANAKO,Reverse sidespin serve,Service ace,reverse-side,non-backspin,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
10,HANAKO,HANAKO,Reverse sidespin serve,Third-ball point (self),reverse-side,non-backspin,half-long,backhand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
11,TARO,TARO,Vertical-spin serve,Third-ball point (opponent),vertical,backspin-type,long,backhand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
12,TARO,TARO,Vertical-spin serve,Receive error (self),vertical,non-backspin,long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
13,HANAKO,HANAKO,Reverse sidespin serve,Service ace,reverse-side,non-backspin,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
14,HANAKO,HANAKO,Vertical-spin serve,Rally won,vertical,non-backspin,long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
15,TARO,TARO,Vertical-spin serve,Rally lost,vertical,non-backspin,long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
16,TARO,TARO,Vertical-spin serve,Receive error (self),vertical,backspin-type,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
17,HANAKO,HANAKO,Reverse sidespin serve,Service ace,reverse-side,non-backspin,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
18,HANAKO,HANAKO,Reverse sidespin serve,Service ace,reverse-side,backspin-type,long,forehand,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
19,TARO,TARO,Vertical-spin serve,Receive error (self),vertical,backspin-type,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
20,TARO,TARO,Vertical-spin serve,Rally lost,vertical,non-backspin,long,middle,,1,3d0f0836,2025-09-02T19:28:52+09:00,HANAKO,TARO
STEP

Azure SQL Database の構築と設定

データレイク(Blob Storage)の準備ができたら、次はデータを流し込むための器となるデータウェアハウス(DWH)、Azure SQL Database を作成します。

DB 作成前の「SQL サーバー」作成手順と設定項目

Azure では、SQL Database(データベース本体)を作成する前に、それを動かすための土台となる「論理 SQL サーバー」を用意する必要があります。データベース作成のウィザード内で一緒に作成します。

  1. Azure Portal の検索窓で「SQL データベース」と検索し、「+ 作成」をクリックします。
  2. 「基本」タブで以下のように入力します。
    • リソースグループ: Test-RG(先ほどと同じものを選択)
    • データベース名: sqldemo
  3. ここで 「サーバー」 の項目の下にある 「新規作成」 をクリックします。すると、サーバー作成用のパネルが表示されます。

SQL 認証(管理者アカウント)の設定とは?

右側に開いた「新しいサーバー」の作成パネルで、最も重要なのが「認証」の設定です。 これは、後ほど Data Factory からデータを書き込んだり、Power BI や自分のパソコンからこのデータベースに接続したりするための「マスターキー(ID とパスワード)」になります。絶対に忘れないようにメモしておいてください。

以下の項目を入力して「OK」をクリックします。

  • サーバー名: sqlsrvdemodata01 ※世界中で一意である必要があります。
  • 場所: Japan Wast (西日本)
  • 認証方法: 「SQL 認証を使用する」 を選択します。
  • サーバー管理者ログイン: sqladmin (任意のユーザー名)
  • パスワード: (大文字・小文字・数字・記号を含む複雑なパスワードを設定)

サーバーが設定できたら、元の画面に戻ります。「コンピューティングとストレージ」は検証用であれば「Basic」など安価なプランに変更し、「確認および作成」をクリックしてデプロイを完了させてください。

「ファイアウォール規則」設定(Azure サービスへのアクセス許可)

この設定を忘れると、後で Data Factory からデータを流し込もうとした時に「接続拒否エラー」になってしまうため、必ず実施してください。

  1. デプロイ完了後、「リソースに移動」をクリックして、作成した SQL Database (sqldemo) の管理画面を開きます。
  2. 左側のメニューから 「セキュリティ」 > 「ネットワーク」 をクリックします。
  3. 「パブリック ネットワーク アクセス」タブで、以下の2つの設定を行います。
    • 「選択されたネットワーク」にチェックを入れる。
    • 画面を下へスクロールし、「例外」の中にある「Azure サービスおよびリソースにこのサーバーへのアクセスを許可する」のチェックボックスをオンにする。

これで Data Factory からアクセスできるようになります。

  1. さらに、「クライアントの IPv4 アドレスを追加する」をクリックします。
  1. 最後に、画面左上の 「保存」 をクリックします。

これで、SQL Database を受け皿として使うための準備が整いました。

STEP

SQL Database でのテーブル作成(クエリ実行)

空のデータベース(sqldemo)が完成したので、次は CSV データを受け入れるための「テーブル(表の枠組み)」を作成します。 Azure Portal には、ブラウザ上から直接データベースを操作できる「クエリエディター」という便利な機能が用意されています。

クエリエディターへのアクセス方法と SQL 認証でのログイン手順

まずは、作成したデータベースにログインして、SQL 文(クエリ)を入力する画面を開きましょう。

  1. Azure Portal の検索窓、またはリソース一覧から、先ほど作成した SQL Database(sqldemo)の管理画面を開きます。
  2. 左側のメニューの中段あたりにある 「クエリ エディター (プレビュー)」 をクリックします。
  3. すると、データベースに接続するためのログイン画面が表示されます。 ここで、STEP2 で設定した「SQL 認証」の情報を使用します。
    • 認証の種類: 「SQL Server 認証」が選択されていることを確認します。
    • ログイン: sqladmin (STEP2 で設定した管理者ユーザー名)
    • パスワード: (STEP2 で設定したパスワード)
  4. 入力できたら 「OK」 をクリックします。
💡 ログイン時にエラーが出る場合

もしここで「Client IP is not allowed…」のようなエラーが出た場合は、STEP2の「ファイアウォール規則」で「クライアントの IPv4 アドレスを追加する」の設定が保存されていない可能性があります。もう一度ネットワーク設定を見直してみてください。

テーブル作成用のクエリ(CREATE TABLE)の実行

無事にログインできると、右側にクエリを入力できる真っ白なエディター画面が開きます。 ここに、今回の卓球のサンプルデータ(CSV)の列(カラム)に合わせたテーブルを作成するためのSQL文を貼り付けます。

  1. 以下の SQL 文をコピーして、エディター画面に貼り付けてください。
CREATE TABLE TableTennisDemo (
    Rally INT,
    Server NVARCHAR(50),
    Winner NVARCHAR(50),
    ServeType NVARCHAR(100),
    Outcome NVARCHAR(100),
    Axis NVARCHAR(50),
    SpinClass NVARCHAR(50),
    Length NVARCHAR(50),
    Course NVARCHAR(50),
    Contact NVARCHAR(50) NULL,
    SetNumber INT,
    match_id NVARCHAR(50),
    created_at DATETIME2,
    player NVARCHAR(50),
    opponent NVARCHAR(50)
);
  1. 貼り付けたら、画面左上の 「▶ 実行」 ボタンをクリックします。
  2. 画面下部のメッセージ欄に 「クエリが正常に実行されました」 と表示されれば成功です。

これで、Blob Storage から流し込まれてくるデータを受け止める「TableTennisDemo」という空のテーブルがデータベース内に用意できました。

STEP

Azure Data Factory でパイプライン構築

データの「出発地点(Blob)」と「到着地点(SQL DB)」の準備が整いました。ここからは、Azure Data Factory(ADF)を使って、その2つの地点を繋ぐ「データの通り道(パイプライン)」を作っていきます。

Azure Data Factory Studio へのアクセス手順(開き方)

ADF でデータ連携の設定を行うには、Azure Portal とは別の専用画面である「Data Factory Studio」を開く必要があります。

  1. Azure Portal の検索窓で「データ ファクトリ(Data factories)」と検索し、「+ 作成」をクリックします。
  2. リソースグループ(Test-RG)を選択し、任意の名前(例: adf-demo-01)と地域を指定して「確認および作成」でリソースを作成します。
  3. デプロイが完了したら「リソースに移動」をクリックします。
  4. 画面の中央にある 「スタジオの起動(Launch studio)」 という大きなボタンをクリックします。
  5. 新しいブラウザタブが開き、Azure Data Factory Studio の専用画面が表示されます。

Linked Service(リンクサービス)の作成(Blob 用・SQL DB 用)

ADF Studio が開いたら、まずは ADF に Blob Storage と SQL Database への「アクセス権限(接続情報)」を教える必要があります。これを Linked Service(リンクサービス) と呼びます。

画面左端のツールバーから 「管理(カバン型のアイコン)」 を選択し、「リンク サービス」>「+ 新規」をクリックして、以下の2つを作成します。

Blob Storage 用のリンクサービス
  • データストア: Azure Blob Storage を選択
  • 名前: ls_blobdemodata
  • ストレージ アカウント名: STEP1 で作成した blobdemodata01 を選択
  • 「接続のテスト」 をクリックして「成功」と出たら「作成」を押します。
SQL Database 用のリンクサービス
  • データストア: Azure SQL Database を選択
  • 名前: ls_sqldemodata
  • サーバー名 / データベース名: STEP2 で作成したものを選択
  • 認証の種類: SQL 認証 を選択
  • ユーザー名 / パスワード: sqladmin と STEP2 で設定したパスワードを入力
  • 同様に「接続のテスト」が成功したら「作成」を押します。

Copy Data アクティビティの設定と列マッピング

接続情報が設定できたら、いよいよ「A から B へデータをコピーする」という具体的な指示(アクティビティ)を作成します。

  1. 左端のツールバーから 「作成(鉛筆型のアイコン)」 を選択します。
  2. 「パイプライン」の「+」ボタンをクリックし、「パイプライン」を新規作成します。
  3. 画面左側の「アクティビティ」一覧から、「移動と変換」の中にある 「データのコピー(Copy data)」 を、右側の広いキャンバスにドラッグ&ドロップします。
ソース(コピー元)の設定
  1. 画面下部の設定パネルから「ソース」タブを開き、「+ 新規」をクリックします。
  2. Azure Blob StorageCSV (区切りテキスト) を選択します。
  3. リンクサービスに ls_blobdemodata を選び、ファイルパスで raw コンテナの中の demodata.csv を指定して「OK」を押します。
シンク(コピー先)の設定
  1. 続いて「シンク」タブを開き、「+ 新規」をクリックします。
  2. Azure SQL Database を選択します。
  3. リンクサービスに ls_sqldemodata を選び、テーブル名で STEP3 で作成した dbo.TableTennisDemo を指定して「OK」を押します。
マッピングの調整

CSV の列名と SQL Database の列名(カラム名)を正しく紐付けます。

  1. 「マッピング」タブを開き、「スキーマのインポート」 をクリックします。
  2. 基本的には自動で同じ名前の列が紐づきますが、異なる名前がある場合(例: CSV 側が Set で DB側が SetNumber の場合など)は、ここで手動でプルダウンから正しい列名を選択して調整します。

デバッグ実行によるデータコピー

設定がすべて完了したら、実際にデータを流し込んでみましょう。

  1. キャンバスの上部にある 「デバッグ」 ボタンをクリックします。
  2. 画面下部の「出力」タブに実行状況が表示されます。
  3. ステータスが「実行中」から 「成功(Succeeded)」 に変われば、Blob から SQL Database へのデータコピーは無事完了です。
STEP

データ格納の確認と Power BI での可視化

ADF のパイプライン実行が「成功」したら、最後にデータの到着確認と、BI ツールを使った可視化を行います。

SQL DB でのデータ格納確認コマンド(SELECT クエリの実行)

「本当にデータがコピーされたの?」と不安な場合は、Azure Portal から直接データベースの中身を覗いてみましょう。

  1. Azure Portal で、作成した SQL Database(sqldemo)の管理画面を開きます。
  2. STEP3 と同じように、左側メニューの 「クエリ エディター (プレビュー)」 を開き、sqladmin とパスワードでログインします。
  3. エディター画面が開いたら、以下の確認用コマンド(SELECT クエリ)を貼り付けます。
-- テーブルの中身を最初の10件だけ表示して確認するコマンド
SELECT TOP 10 * FROM TableTennisDemo;
  1. 左上の 「▶ 実行」 をクリックします。
  2. 画面下部の「結果」タブに、CSV にあった卓球のデータが表形式でズラリと表示されれば、成功です。

Power BI Desktop から Azure SQL Database への接続手順

データが DWH(SQL Database)に無事格納されたので、いよいよ PC にある Power BI Desktop からこのデータベースに接続します。

  1. Power BI Desktop を起動し、ホーム画面の 「データの取得」 をクリックします。
  2. 検索窓で「Azure」と検索し、「Azure SQL データベース」 を選択して「接続」をクリックします。
「データの取得」→「Azure SQL Database」
  1. 接続情報の入力画面が出たら、以下を入力して「OK」をクリックします。
    • サーバー: sqlsrvdemodata01.database.windows.net
    • データベース: sqldemo
サーバー名:sqlsrvdemodata01.database.windows.net
DB 名: sqldemo

サーバー名: sqlsrvdemodata01.database.windows.netSTEP2 で作成したサーバー名の後ろに .database.windows.net を付けたものです。Azure ポータルの SQL データベースの概要画面からコピーできます。

  1. 次の画面で「どの方法でログインするか」を聞かれます。ここで左側のタブから必ず 「データベース」(環境によっては「SQL Server」)を選択してください。
    • ユーザー名: sqladmin
    • パスワード: (STEP2 で設定したパスワード) を入力し、「接続」をクリックします。
認証:SQL Server 認証(ユーザー名:sqladmin
  1. ナビゲーター画面が表示されたら、TableTennisDemo のチェックボックスをオンにして、右下の 「読み込み」 をクリックします。
テーブル TableTennisDemo を読み込み

可視化の実行例

画面右側の「データ」ペインに TableTennisDemo の項目が表示されたら準備完了です。あとは自由にドラッグ&ドロップしてレポートを作成しましょう。

例えば、以下のように設定すると簡単にグラフが作れます。

  • 横棒グラフ: 「サーブの種類(ServeType)」ごとの得点傾向を分析
  • 積み上げ棒グラフ: 「サーブのコース(Course)」ごとの得点傾向を分析
可視化の例

これで Azure を使ったデータ分析基盤の一連の構築はすべて完了です。

まとめ

今回は、Azure を利用して生データ(CSV)から視覚的なレポートを作成するまでの一連のデータ分析基盤(Blob → ADF → SQL → Power BI)を構築する手順を解説しました。

  • まず「論理 SQL サーバー」を作成し、管理者アカウント(SQL 認証)を確実に設定しましょう。
  • ADF からの通信拒否を防ぐため、DB 作成後に「Azure サービスへのアクセス許可」を必ずオンにします。
  • データ格納の確認は、ポータル上のクエリエディターで SELECT コマンドを実行するのが一番手軽で確実です。

以上、最後までお読みいただきありがとうございました。


よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次