1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

異なる種別のデータベース(Oracle / SQL Server)間でのデータ比較を行う

Posted at

本記事の目的

2つのDBテーブル間でのデータ比較を行いたいが、比較対象のテーブルはそれぞれ異なるデータベース上にある。手間をかけずにささっと簡単な比較をするには、どうしたらよいか。

■ 使いたいデータソース

  1. Oracle Server (オンプレ)
  2. SQL Database (Azure)

image.png

いつもは「Object Browser for Oracle」と「SQL Server Management Studio」を使い分けてそれぞれのDBにアクセスしていることもあり、DBを横断して比較するとなったときに、ふと手が止まった。

何か楽にできる方法がないかと考えたら、Power BIで簡単にできることに気が付いた。
Power BIを「データコラボレーションツール」と捉えられている人にとっては当たり前だが、「データ可視化ツール」と認識していると案外こういう発想が出てこなかったりする。

アプローチ

<手順>
Power BIを利用したことがある人であれば、特に迷うことはない。

  1. Oracle Databaseコネクタを使ってOracleのデータを取得
  2. SQL Serverデータベース コネクタを使ってSQL Databaseのデータを取得
  3. PowerQueryなりDAXなりで自由に分析

1. Oracle Databaseコネクタを使ってOracleのデータを取得

Power BIでは様々なデータソースに対するコネクタが用意されているため、それを使えば画面操作で簡単にデータをかき集めてくることができる。ちなみに対象へのコネクタをMicrosoftが提供していない場合でも、サードパーティのコネクタを使えば接続できることもある。

Oracleの場合も、接続先の情報を入れて認証情報を入れるだけでつながる。
image.png

2. SQL Serverデータベース コネクタを使ってSQL Databaseのデータを取得

Oracleの場合とほとんど同じ。
image.png

3. PowerQueryなりDAXなりで自由に分析

両方のデータを取り込んだら、あとはPower BI側の機能で分析すればよい。JOINやUNIONなど多くのことはPowerQueryでもDAXでも実現できる。PowerQueryなら画面上のマウスクリック操作だけですぐ実現できるので、データ取り込み時にPowerQuery上でやってしまえば良い。

以下はPowerQueryでのJOINとUNIONの操作。データの取り込み時に「データの変換」を選ぶとPowerQueryの画面になる。

JOIN

「クエリのマージ」という機能を使えば良い。どのテーブルでリレーションを貼るかを選択して、結合の種類を選択する。

ちなみに過去の記事で書いたが、Power BIでは複合キーによるリレーションは使えないので、必要ならマージした列を作るなどしておく。
image.png

UNION

「クエリの追加」という機能を使う。どのテーブルをUNOINしたいかを選択するだけ。
image.png

DAX関数を使えば、他にも細かいことが色々とできる。例えばEXCEPTを使えば、あるテーブルの中でもう1つのテーブルに出現しない行だけ持つ差分テーブルが作れるので便利。

まとめ

「Power BI = データの可視化ツール」という考えに囚われると頭が固くなる。Power BIはデータをかき集めてきてあれこれする「データコラボレーションツール」と考えたほうが良さそう。豊富に用意されているコネクタ機能を使えば、比較的簡単にいろいろ実現できて面白い。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?