メルマガ登録
「Microsoft Fabric」の技術検証を基に、Microsoft Fabricの魅力や各種ポイントを解説していきます。
今回は Azure SQL Database から Microsoft Fabric へのデータ移行方法の 1 つをご紹介します。
とあるお客様より「既存の環境より手軽に分析したいため、Azure SQL Database から Microsoft Fabric へデータ移行を実施したい」というご相談がありました。
そのお客様は現状、直接 Azure SQL Database のデータを分析されており、その他の諸条件(現状の利用方法、データ量、環境を含めた移行難易度、等)を鑑みて、Microsoft Fabric のレイクハウスに移行してはいかがかとご提案しました。
今回ご紹介する内容は、公式ドキュメントの「移行: Azure Synapse Analytics 専用 SQL プールから Fabric へ」内にある「方法 3. DDL 移行 – コピー ウィザードの ForEach Copy アクティビティ」を応用した内容となります。
具体的には、Data Factory のコピーウィザードを使って、GUI 設定で ForEach Copy アクティビティを作成し、実行する手順を記載しています。
なお、上記に挙げた公式ドキュメントは Azure Synapse Analytics 専用 SQL プールが中心となっておりますが、移行における考えや手順については Azure SQL Database でも適用できる部分が多いので、Azure SQL Database から Microsoft Fabric へのデータ移行を検討されている方は参考にしてみると良いかと思います。
Microsoft Fabric のエクスペリエンスの 1 つである Data Factory のコピーウィザードを使用し、Azure SQL Database のテーブル/ビューを Fabric のレイクハウスに移行する手順について、Azure 側と Fabric 側に分けて順を追って解説します。
まずは Azure 側の設定を行います。Azure 側の設定内容は 2 つあります。
なお、検証した際の Azure 権限は「共同作成者」権限で実施しています。
移行元の Azure SQL Database を準備します。今回は検証なので、新規にサンプルデータベースを持った Azure SQL Database を作成しました。
サンプルデータベースの作成は、Azure SQL Database を作成する際に「追加設定」タブの「既存のデータを使用します」で「サンプル」を選択すれば OK です。
「サンプル」を選択すると以下のデータベースを自動で作成してくれます。
ここでのポイントは、Azure SQL Database のサーバー側ネットワーク設定です。
Azure SQL Database が動いているサーバー(SQL Server)の「セキュリティ」→「ネットワーク」より「Azure サービスおよびリソースにこのサーバーへのアクセスを許可する」にチェックを入れる必要があります(下図赤枠部分)。
チェックを入れない場合、Microsoft Fabric の Data Factory が Azure SQL Database にアクセスできず、コピーウィザードの実行が失敗してしまいます。
次に Azure 内に Fabric 容量を作成します。
Fabric 容量の作成については以下を参照ください。
Fabric 容量の作成は基本的に以下の設定のみなので、それほど難しくはないかと思います。
Azure 側の設定が完了したら、Fabric 側の設定を行います。Fabric 側の設定内容は 2 つあります。
なお、検証した際の Fabric 権限は「Fabric 管理者」権限で実施しています。
検証内でワークスペースを新規で作成したため、自動的に「ワークスペース管理者」の権限も所有した状態で実施しています。
Fabric 容量の作成については以下を参照ください。
参考:ワークスペースの作成
ここでのポイントは以下 2 点となります(下図赤枠部分参照)
ワークスペースを作成後、以下の順番で Data Factory のコピーウィザードを作成します。
ワークスペースの「+新しい項目」より「Data pipeline」を選択し、新しいパイプラインに名前をつけて「作成」をクリックします。
パイプラインを作成後、「アクティビティ」タブ→「データコピー」→「コピーアシスタントを使用する」をクリックします。
ここからコピーウィザードの設定を行います。
「データソースの選択」で「Azure SQL Database」を選択します。
「Azure SQL Database の準備と必要な設定」で作成した Azure SQL Database の接続情報を入力して「次へ」をクリックします。
<入力項目>
カテゴリ | 入力項目 | 値 |
---|---|---|
接続設定 | サーバー | Azure SQL Database のサーバー名 |
データベース | Azure SQL Database のデータベース名 | |
接続の資格情報 | 接続 | 「新しい接続の作成」で OK |
接続名 | 任意で設定可能。 サーバーとデータベースを入力すると、デフォルトで以下のように自動入力される。 <サーバー>;<データベース> | |
データゲートウェイ | 「(なし)」で OK | |
認証の種類 | 以下 3 つから選択。 基本:SQL 認証(ID とパスワード入力) 組織アカウント:ユーザーアカウント サービスプリンシパル | |
ー | 暗号化された接続を使用する | チェックを入れる |
オンプレミスのデータゲートウェイまたは VNet データゲートウェイでこの接続を使用できるようにします | チェックを外す |
「データソースへの接続」で、移行したいテーブル/ビューを選択して「次へ」をクリックします。
今回は「すべて選択」にチェックを入れました。
「データ変換先の選択」で「新しいファブリック項目」→「Lakehouse」を選択し、新しいレイクハウスに任意の名前をつけてレイクハウスを作成します。
今回はコピーウィザードの作成の流れでレイクハウスを作成しましたが、既存のレイクハウスがある場合は上部にある検索バーよりレイクハウスを検索・指定すれば OK です。
「データ変換先に接続」で Azure SQL Database とレイクハウスのデータ型をマッピングできます。各テーブル/ビューのマッピングを確認し「次へ」をクリックします。
今回はすべてデフォルトの設定にしました。
レイクハウス側で選べるデータ型は限られているので注意が必要です。
<レイクハウスで設定できるデータ型>
「レビューと保存」で「データ転送をすぐに開始する」(デフォルト:オン)にチェックが入っていることを確認して、「保存と実行」をクリックします。
「保存と実行」をクリックするとパイプラインの画面に戻り、ForEach アクティビティが作成されています。右側にパラメーターの画面が出ているので「OK」をクリックすると、Azure SQL Database からレイクハウスへのデータコピーが開始されます。
なお、右側のパラメーターの「値」には、「データ変換先に接続」で Azure SQL Database とレイクハウスのデータ型をマッピングした内容が JSON 形式で格納されています。
今回、Azure SQL Database のサンプルデータベースを使って検証をしていますが、データコピーを実行中に 1 件エラーが発生しました。エラーの内容は以下になります。
『Failure happened on ‘destination’ side. ErrorCode=DeltaInvalidCharacterInColumnName
,’Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Column name Database Version contains invalid characters. “,;{}()\n\t=” are not supported.,Source=Microsoft.DataTransfer.ClientLibrary,’』
どうやら Azure SQL Database のテーブルのカラム名が適切でないようです。
Azure SQL Database の該当のカラム名を見てみましょう。エラーになっているのは「Database Version」というカラム名でした。エラーの内容とは直接的に合致しなさそうのですが、カラム名に半角スペースが入っているのが引っ掛かったのだと推察しました。
※データベースでテーブル名やフィールド名にスペースを使うことは、一般的には推奨されていないため。
エラーになったテーブル以外は、レイクハウスのテーブルにコピーされています(赤枠部分が該当)。
なお、コピーウィザードで作成したアクティビティを再実行したい場合は、ForEach アクティビティ内にあるデータコピーアクティビティを選択して「宛先」タブ→「テーブルアクション」より追加か上書きを指定できます。
Azure SQL Database のデータを Microsoft Fabric に移行すると聞いて、Microsoft Fabric の機能であるミラーリングを思い浮かべた方もいらっしゃるかもしれません。
確かに、Microsoft Fabric 内に物理的にデータを取りこむという点では、今回ご紹介したコピーウィザードもミラーリングも同じとなります。
コピーウィザードとミラーリングの違いは利用方法にあります。
コピーウィザードはデータ移行(1 回のみの)、定期的なデータコピーのいずれにも対応しています。
ミラーリングはニアリアルタイムでのデータ同期がメインの機能となっています。
ミラーリングも移行に使えないことはないのですが(※)、ミラーリングの設定には諸々の制約があるため、Microsoft Fabric へのデータ移行を実現したい場合はコピーウィザードの方がお勧めかもしれません。
(※)ミラーリングの設定を実施し、データを完全に同期させた後、ミラーリングの設定を解除することでデータ移行と同様のことを行うことは可能です。
今回は Azure SQL Database から Microsoft Fabric へのデータ移行方法の 1 つとして、Data Factory のコピーウィザードを使用した方法をご紹介しました。
Azure SQL Database から Microsoft Fabric へ”単純にデータを移行するだけ”なら、思っていた以上に簡単にデータ移行ができることが分かったかと思います。
ただし、データ移行プロジェクトは通例”単純にデータを移行するだけ”ではありません。
データ移行に伴い、影響がある部分は意外と多いです。
<データ移行プロジェクトで必要なこと(抜粋)>
データ移行後も業務が円滑に回ることを前提に、お客様の条件に応じたご提案が可能です。Microsoft Fabric への移行をお考えの方は弊社にご相談ください。
あなたにオススメの記事
2023.12.01
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
2023.09.21
DX(デジタルトランスフォーメーション)とは?今さら聞けない意味・定義を分かりやすく解説【2024年最新】
2023.11.24
【現役社員が解説】データサイエンティストとは?仕事内容やAI・DX時代に必要なスキル
2023.09.08
DX事例26選:6つの業界別に紹介~有名企業はどんなDXをやっている?~【2024年最新版】
2023.08.23
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
2024.03.22
生成AIの評価指標・ベンチマークとそれらに関連する問題点や限界を解説