ここでは、CData Virtuality で異なるデータベーステーブルから取得したデー タを組み合わせてビューを作成する方法を説明します。

What is a View

CData Virtuality では、ビューは複数のデータソース(例:MySQL のテーブルとPostgreSQL のテーブルなど)のクエリ結果を組み合わせて作成される仮想テーブルです。ビューは、多様なシステムにまたがるデータを統一して分析する方法を提供します。これがその仕組みです

Views.png

作成されたビューはCData Virtuality のスキーマスペースに格納され、さらなるクエリや分析のためにアクセスできるようになります。

Creating a View

このガイドでは、CData Virtuality Web Interface / SaaSStudio の両方でビューを作成する手順を順を追って説明します。

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

  1. Code Editor を開き、ツールバー内のView Builder ボタンをクリックします:

att_14_for_568787028.png
  1. View Builder ウィンドウで、左側のメニューにあるOpen a table selection dialog ボタンをクリックします:

att_4_for_568787028.png
  1. Table Selection 画面が表示されます。MySQL からCustomers、PostgreSQL からOrders テーブルを選択して(どちらもサンプルデータベースで利用可能です)、Add ボタンをクリックします:

att_5_for_568787028.png
  1. View Builder 画面に戻ります。CustomersMySQL)と OrdersPostgreSQL)の2つのテーブルが正常に追加されていることを確認します:

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

  • Join Type:Inner Join

  • "Customers" table column:customerid:integer, Cast

  • Operator:=

  • "Orders" table column:customerid:integer, Cast

    att_2_for_568787028.png
  1. CustomersOrders テーブル間にリレーションが正常に作成されたことを確認します。CustomersOrders 内の取得したい項目(フィールド)を選択し、左メニューのCreate View ボタンをクリックします:

att_7_for_568787028.png
  1. スキーマを選択し、ビューの名前(例:CustomersOrder)を入力して、Create View ボタンをクリックします:

att_8_for_568787028.pngatt_19_for_568787028.png
  1. 作成されたビューからデータを取得するには、左メニューのBrowser タブ -> Virtual Schemas -> Views をクリックします。ビュー名(例:CustomersOrder)の右にある縦三点リーダーをクリックし、コンテキストメニューからGenerate Statement を選択してデータを取得します:

att_20_for_568787028.png
  1. 以下の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";;
att_3_for_568787028.png
  1. Run Script ボタンをクリックします。Result エリアには、MySQL のCustomers テーブルとPostgreSQL のOrder テーブルのデータを結合した結果が表示されます:

att_32_for_568787028.png
  1. メニュー内のData Lineage ボタンをクリックします:

att_30_for_568787028.png
  1. Data Lineage 画面が表示されます。この画面は、クエリ(SELECT)がデータを取得したデータソースをグラフィカルに表示します:

att_15_for_568787028.png
  1. Data Lineage 画面を閉じてメニューのQuery Plan ボタンをクリックします:

att_31_for_568787028.png
  1. Query Plan 画面が表示されます。この画面は、クエリの実行プランをグラフィカルに表示します。 この例では、クエリはデータソースの各テーブルから取得されたデータが、MERGE JOIN を使用してINNER JOIN operation 中に結合されていることを示しています:

att_16_for_568787028.png
  1. Query Plan 画面を閉じます。左側のVirtual Schema views セクションで、ビュー名の右側にある縦三点リーダーをクリックし、コンテキストメニューからEdit を選択してビューを変更します:

att_28_for_568787028.png
  1. 新しい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

  1. CData Virtuality Studio を起動します。左側のData Explorer からVirtual Schemas -> Views ->Tables / Views を開きます。CData Virtuality Web UI を使用してビューを作成している場合は、それらのビューが表示されます。ビューが表示されない場合は、右上のRefresh the views / Refresh the datasources ボタンをクリックしてリストを更新します:

  1. 上部ツールバーメニューのOpen View builder アイコンをクリックします:

  1. Schema を選択し、ビュー名を入力します(例:CustomersOrder_builder)。ビュー名は一意でなければならないことに注意してください:

  1. + ボタンをクリックしてCreate virtual views 画面を開きます。MySQL からCustomers、PostgreSQL からOrders テーブルを選択して(どちらもサンプルデータベースとして提供されています)、Add ボタンをクリックします:

  1. View Builder 画面に戻ります。CustomersMySQL)とOrdersPostgreSQL)の2つのテーブルが正常に追加されていることを確認します:

  1. Customers テーブル内のcustomerid フィールドをドラッグしてOrders 内のcustomerid フィールドの場所でドロップします

  1. Join Setting 画面が表示されるので、以下のデフォルト設定を維持したまま、Save ボタンをクリックします:

  • Join Type:Inner Join

  • "Customers" table column:customerid:integer

  • Operator:=

  • "Orders" table column:customerid:integer

  1. CustomersOrders テーブル間にリレーションが正常に作成されたことを確認します。CustomersOrders 内の取得したい項目(フィールド)を選択し、左メニューのCreate View ボタンをクリックします:

  1. ビューが正常に作成された旨のダイアログが表示されたらOK ボタンをクリックします

  1. Views ウィンドウの右上隅にあるRefresh current views ボタンをクリックします。新しく作成されたビューがリストに表示されていることを確認します:

  1. 作成したビューからデータを取得するには、作成したビューの名前(例:CustomersOrder_builder)を右クリックし、コンテキストメニューからGenerate Statement を選択します:

  1. 以下の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
  1. 緑色の再生ボタンをクリックしてスクリプトを実行します。Result エリアには、MySQL のCustomers テーブルとPostgreSQL のOrder テーブルのデータを結合した結果が表示されます:

  1. メニュー内のData Lineage ボタンをクリックします。Data Lineage 画面が表示されます。この画面は、クエリ(SELECT)がデータを取得したデータソースをグラフィカルに表示します

  1. Data Lineage 画面を閉じてメニューのShow Query Plan ボタンをクリックします。Query Plan 画面が表示されます。この画面は、クエリの実行プランをグラフィカルに表示します。 この例では、クエリはデータソースの各テーブルから取得されたデータが、MERGE JOIN を使用してINNER JOIN operation 中に結合されていることを示しています。

  2. 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 ビューの作成方法の詳細についてはこちらをご覧ください。