CData Virtuality - Viewの作成

by 桑島義行 | 2024年07月15日

000

はじめに

CData Virtualityは、エンタープライズグレードのデータ仮想化プラットフォームです。データ仮想化によるリアルタイムデータアクセスとデータレプリケーションのバイモーダルによるデータ連携を提供します。本記事では、CData Virtualityで異なるデータベースのテーブルから取得したデータを結合したViewを作成する方法をご紹介します。
 

事前準備

CData Virtualityには、インストール版とフルマネージドクラウド(SaaS)版がございます。入手および初期設定方法は以下の記事をご参照ください。

- CData Virtuality - 製品のインストール、および、初期設定方法 (Windows版)
- CData Virtuality - 無償トライアル、および、初期設定方法 (SaaS版)

Viewとは

CData Virtualityでは、複数のデータソース(例えば、MySQL内のテーブルとPostgreSQL内のテーブル)を結合して取得した結果から仮想的なテーブル、つまりViewを作成することが出来ます。
001
このViewはVirtual Schemasと呼ばれるCData Virtuality内のスキーマ空間に保管されます。
 

Viewの作成手順

本記事では、CData Virtuality Web Interface、および、CData Virtuality Studioでの作成方法をご紹介します。
 

CData Virtuality Web InterfaceでのViewの作成

「Code Editor」を開き、ツールバー内の「View Builder」ボタンをクリックします。
002
「View Builder」が起動するので左側のメニューより「Open a table selection dialog」ボタンをクリックします。
003
「Table Slection」画面が表示されます。サンプルデータベースとして準備されているMySQLから「Customers」、PostgreSQLから「Orders」テーブルを選択して「Add」ボタンをクリックします。
004
View Builderの画面に戻り、Customers(MySQL)とOrders(PostgreSQL)2つのテーブルが追加されていることを確認できます。
005

Customersテーブル内のcustomeridフィールドをドラッグしてOrders内のcustomeridフィールドの場所でドロップします。
Join Setting画面が表示されるので、以下のデフォルトのままSaveボタンをクリックします。

- Join Type : Inner Join
- "Customers" table column : customerid:integer, Cast
- Operator : =
- "Orders" table column : customerid:integer, Cast

006

CustomersとOrders間にリレーションが作成されたことを確認し、CustomersとOrders内の取得したい項目にチェックしたら左側のメニューの「Create View」ボタンをクリックします。
007
Schemaの選択と、View名を入力(本例では、CustomersOrder)して「Create View」ボタンをクリックします。
008
作成したViewを利用してデータを取得してみましょう。左メニューのBrowserタブ > Virtual Schemas > Viewsをクリックします。
009
上記手順で作成したView(例:CustomersOrder)右の縦3点をクリックして「Generate Statement」を選択します。
010
以下のSQLがEditorに生成されます。
SELECT "customerid", "companyname", "address", "country", "city", "sector", "industry", "city_id", "orderid", "orderdate", "cost", "subtotal", "taxes", "total", "uuid_group", "segment" FROM "views.CustomersOrder";;
011
「Run Script」ボタンをクリックします。「Result」エリアにMySQL内のCustomerとPostgreSQL内のOrderが結合された結果データを確認できます。
012
上記メニュー内の「Data Lineage」ボタンをクリックします。
013
Data Lineage画面が表示され、Query(SELECT)により、どのようなデータソースから取得したデータかをグラフィカルに確認することが出来ます。
014
Data Lineage画面を閉じて右隣の「Query Plan」ボタンをクリックします。
015
Queryの実行プランをグラフィカルに確認することが出来ます。このクエリの例では、データソースの各テーブルから取得したデータをINNER JOIN時にMERGE JOINで結合していることを確認できます。
016
Query Planを閉じます。左側のVirtual Schema viewsから作成したview右横の縦3点ボタンをクリックして、Editボタンをクリックします。
017
Editorが新規に開き、以下のSQLが生成されます。Viewの定義の変更は同SQLを変更して実行することで可能です。
CREATE OR REPLACE VIEW "views.CustomersOrder" AS 
  SELECT
  "Customers.customerid","Customers.companyname","Customers.address","Customers.country","Customers.city","Customers.sector","Customers.industry","Customers.city_id","Orders.orderid","Orders.orderdate","Orders.cost","Orders.subtotal","Orders.taxes","Orders.total","Orders.uuid_group","Orders.segment"
  FROM
   "mysql.Customers"  INNER JOIN "postgres.Orders"  ON "Customers.customerid" = "Orders.customerid" 
  
  ;;
CData Virtuality Web Interface画面でのViewの作成方法は以上です。
 

CData Virtuality StudioでのViewの作成

次にCData Virtuality StudioからViewを作成します。
CData Virtuality Studioを起動します。左側のData explorerから Virtual schemas > views > Tables / viewsを開きます。先にCData Virtuality Web Interfaceでviewを作成した場合は、作成済みのviewが表示されます。表示されない場合は右上の「Refresh the views / Refresh the datasources 」ボタンをクリックください。
018
上部アイコン内の「Open View builder」ボタンをクリックします。
019
「View builder」が起動します。Schemaを選択し、View名を入力(本例では、CustomersOrder_builder)します。なお、view名はユニークな名称である必要がありますのでご注意ください。
020
Table「+」ボタンをクリックすると「Create virtual views」画面が表示されます。サンプルデータベースとして準備されているMySQLから「Customers」、PostgreSQLから「Orders」テーブルを選択して「Add」ボタンをクリックします。
021
View Builderの画面に戻り、Customers(MySQL)とOrders(PostgreSQL)2つのテーブルが追加されていることを確認できます。
022
Customersテーブル内のcustomeridフィールドをドラッグしてOrders内のcustomeridフィールドの場所でドロップします。
023
Join Setting画面が表示されるので、以下のデフォルトのままOKボタンをクリックします。

- "Customers" table column : customerid:integer
- Operator : =
- "Orders" table column : customerid:integer
024
CustomersとOrders間にリレーションが作成されたことを確認し、CustomersとOrders内の取得したい項目にチェックしたら左側のメニューの「Create View」ボタンをクリックします。
025
正しくviewが作成された旨のダイアログが表示されたらOKボタンをクリックします。
026
views Window右上の「Refresh current views」ボタンをクリックして表示を最新化して作成したviewが表示されることを確認します。
027
作成したViewを利用してデータを取得してみましょう。作成したview(本例では、CustomerOrder_builder)を選択して右クリックから「Generate SELECT statement」を選択します。
028
以下のSQLがEditorに生成されます。
SELECT "customerid", "companyname", "address", "country", "city", "sector", "industry", "city_id", "iso3_country_code", "orderid", "Orders_customerid", "orderdate", "cost", "subtotal", "taxes", "total", "uuid_group", "segment" FROM "views.CustomersOrder_builder";;
029
緑色の再生ボタン「Run Script」をクリックします。「Result」エリアにMySQL内のCustomerとPostgreSQL内のOrderが結合された結果データを確認できます。
030
上記メニュー内の「Data Lineage」ボタンをクリックします。

Data Lineage画面が表示され、Query(SELECT)により、どのようなデータソースから取得したデータかをグラフィカルに確認することが出来ます。
031
次に「Data Lineage」ボタン左隣の「Show query Plan」ボタンをクリックします。

Queryの実行プランをグラフィカルに確認することが出来ます。このクエリの例では、データソースの各テーブルから取得したデータをINNER JOIN時にMERGE JOINで結合していることを確認できます。

Views一覧タブに戻り、作成したviewを選択するとDefinitionにViewの定義が表示されます。Viewの定義の変更は同SQLを変更して実行することで可能です。
CREATE OR REPLACE VIEW "views.CustomersOrder_builder" AS 
SELECT 
	"Customers.customerid",
	"Customers.companyname",
	"Customers.address",
	"Customers.country",
	"Customers.city",
	"Customers.sector",
	"Customers.industry",
	"Customers.city_id",
	"Customers.iso3_country_code",
	"Orders.orderid",
	"Orders.customerid" AS "Orders_customerid",
	"Orders.orderdate",
	"Orders.cost",
	"Orders.subtotal",
	"Orders.taxes",
	"Orders.total",
	"Orders.uuid_group",
	"Orders.segment"
FROM 
	"mysql.Customers" INNER JOIN "postgres.Orders" ON "Customers.customerid" = "Orders.customerid"
CData Virtuality StudioでのViewの作成方法は以上です。
 

まとめ

本記事では、CData Virtualityで異なるデータベースのテーブルから取得したデータを結合したViewを作成する方法をご紹介しました。CData Virtualityはフルマネージドクラウド(SaaS)版、および、インストール版で無償トライアルを提供しています。無償トライアルを始められる場合や設定を進める中でご不明な点が出てきた際には弊社テクニカルサポートまでお問い合わせください。
 

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。