ここでは、CData Virtuality で異なるデータベーステーブルから取得したデー タを組み合わせてビューを作成する方法を説明します。
What is a View
CData Virtuality では、ビューは複数のデータソース(例:MySQL のテーブルとPostgreSQL のテーブルなど)のクエリ結果を組み合わせて作成される仮想テーブルです。ビューは、多様なシステムにまたがるデータを統一して分析する方法を提供します。これがその仕組みです:
作成されたビューはCData Virtuality のスキーマスペースに格納され、さらなるクエリや分析のためにアクセスできるようになります。
Creating a View
このガイドでは、CData Virtuality Web Interface / SaaS とStudio の両方でビューを作成する手順を順を追って説明します。
We use sample data to illustrate the process. For instructions on connecting to the sample data, please see the corresponding guide.
Creating a View in the CData Virtuality Web UI
Code Editor を開き、ツールバー内のView Builder ボタンをクリックします:
View Builder ウィンドウで、左側のメニューにあるOpen a table selection dialog ボタンをクリックします:
Table Selection 画面が表示されます。MySQL からCustomers、PostgreSQL からOrders テーブルを選択して(どちらもサンプルデータベースで利用可能です)、Add ボタンをクリックします:
View Builder 画面に戻ります。Customers(MySQL)と Orders(PostgreSQL)の2つのテーブルが正常に追加されていることを確認します:
Customers テーブル内の
customerid
フィールドをドラッグしてOrders テーブル内のcustomerid
フィールドの場所でドロップします。Join Setting 画面が表示されるので、以下のデフォルト設定を維持したまま、Save ボタンをクリックします:
Join Type:Inner Join
"Customers" table column:customerid:integer, Cast
Operator:=
"Orders" table column:customerid:integer, Cast
Customers とOrders テーブル間にリレーションが正常に作成されたことを確認します。Customers とOrders 内の取得したい項目(フィールド)を選択し、左メニューのCreate View ボタンをクリックします:
スキーマを選択し、ビューの名前(例:
CustomersOrder
)を入力して、Create View ボタンをクリックします:
作成されたビューからデータを取得するには、左メニューのBrowser タブ -> Virtual Schemas -> Views をクリックします。ビュー名(例:
CustomersOrder
)の右にある縦三点リーダーをクリックし、コンテキストメニューからGenerate Statement を選択してデータを取得します:
以下のSQL がCode Editor に生成されます:
SELECT
"customerid"
,
"companyname"
,
"address"
,
"country"
,
"city"
,
"sector"
,
"industry"
,
"city_id"
,
"orderid"
,
"orderdate"
,
"cost"
,
"subtotal"
,
"taxes"
,
"total"
,
"uuid_group"
,
"segment"
FROM
"views.CustomersOrder"
;;
Run Script ボタンをクリックします。Result エリアには、MySQL のCustomers テーブルとPostgreSQL のOrder テーブルのデータを結合した結果が表示されます:
メニュー内のData Lineage ボタンをクリックします:
Data Lineage 画面が表示されます。この画面は、クエリ(SELECT)がデータを取得したデータソースをグラフィカルに表示します:
Data Lineage 画面を閉じてメニューのQuery Plan ボタンをクリックします:
Query Plan 画面が表示されます。この画面は、クエリの実行プランをグラフィカルに表示します。 この例では、クエリはデータソースの各テーブルから取得されたデータが、
MERGE JOIN
を使用してINNER JOIN
operation 中に結合されていることを示しています:
Query Plan 画面を閉じます。左側のVirtual Schema views セクションで、ビュー名の右側にある縦三点リーダーをクリックし、コンテキストメニューからEdit を選択してビューを変更します:
新しいCode Editor タブが開き、以下の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"
;;
Creating a View in the CData Virtuality Studio
CData Virtuality Studio を起動します。左側のData Explorer からVirtual Schemas -> Views ->Tables / Views を開きます。CData Virtuality Web UI を使用してビューを作成している場合は、それらのビューが表示されます。ビューが表示されない場合は、右上のRefresh the views / Refresh the datasources ボタンをクリックしてリストを更新します:
上部ツールバーメニューのOpen View builder アイコンをクリックします:
Schema を選択し、ビュー名を入力します(例:
CustomersOrder_builder
)。ビュー名は一意でなければならないことに注意してください:
+ ボタンをクリックしてCreate virtual views 画面を開きます。MySQL からCustomers、PostgreSQL からOrders テーブルを選択して(どちらもサンプルデータベースとして提供されています)、Add ボタンをクリックします:
View Builder 画面に戻ります。Customers(MySQL)とOrders(PostgreSQL)の2つのテーブルが正常に追加されていることを確認します::
Customers テーブル内のcustomerid フィールドをドラッグしてOrders 内のcustomerid フィールドの場所でドロップします:
Join Setting 画面が表示されるので、以下のデフォルト設定を維持したまま、Save ボタンをクリックします:
Join Type:Inner Join
"Customers" table column:customerid:integer
Operator:=
"Orders" table column:customerid:integer
Customers とOrders テーブル間にリレーションが正常に作成されたことを確認します。Customers とOrders 内の取得したい項目(フィールド)を選択し、左メニューのCreate View ボタンをクリックします:
ビューが正常に作成された旨のダイアログが表示されたらOK ボタンをクリックします:
Views ウィンドウの右上隅にあるRefresh current views ボタンをクリックします。新しく作成されたビューがリストに表示されていることを確認します:
作成したビューからデータを取得するには、作成したビューの名前(例:
CustomersOrder_builder
)を右クリックし、コンテキストメニューからGenerate Statement を選択します:
以下のSQL がCode 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"
;;;
"order_name"
,
"country"
,
"city"
,
"sector"
,
"industry"
,
"city_id"
,
"iso3_country_code"
,
"orderid"
, "Orders_Order_builder
緑色の再生ボタンをクリックしてスクリプトを実行します。Result エリアには、MySQL のCustomers テーブルとPostgreSQL のOrder テーブルのデータを結合した結果が表示されます:
メニュー内のData Lineage ボタンをクリックします。Data Lineage 画面が表示されます。この画面は、クエリ(SELECT)がデータを取得したデータソースをグラフィカルに表示します:
Data Lineage 画面を閉じてメニューのShow Query Plan ボタンをクリックします。Query Plan 画面が表示されます。この画面は、クエリの実行プランをグラフィカルに表示します。 この例では、クエリはデータソースの各テーブルから取得されたデータが、
MERGE JOIN
を使用してINNER JOIN
operation 中に結合されていることを示しています。Views list タブに戻り、作成したビューを選択します。ビューの定義がDefinition フィールドに表示されます:
CREATE
OR
REPLACE
VIEW
"views.CustomersOrder_builder"
AS
SELECT
"Customers.customerid"
,
"customerid"
.
"Customers.companyname"
,
"Customers.
"
Customers.address
", "
Customers.address
".
"
Customers.country
", "
Customers
".
"
Customers.city
", "
Customers
".
"
Customers.sector
", "
Customers.sector
".
"
Customers.industry
", "
Customers
".
"
Customers.city_id
", "
Customers.
"Customers.iso3_country_code"
,
"iso3_country_code"
.
"Orders.orderid"
,
"orderid"
.
"Orders.customerid"
AS
"Orders_customerid"
,
"Orders.
"
Orders.orderdate
", "
orderdate
".
"
Orders.cost
", "
Orders.cost
".
"
Orders.subtotal
", "
Orders.subtotal
".
"
Orders.taxes
", "
Orders.taxes
".
"
Orders.total
", "
Orders.total
".
"
Orders.uuid_group
", "
Orders.
"Orders.segment"
.
FROM
"mysql.Customers"
INNER
JOIN
"postgres.Orders"
ON
"Customers.customerid"
=
"Orders.customerid"
See Also
Create View ビューの作成方法の詳細についてはこちらをご覧ください。