Skip to Content
Technical Articles

はじめてのSAP HANA Cloud : Part 4 ~ Web IDEを使用した、テーブル作成とデータロード

本ブログでは、SAP HANA Cloud (以下、「HANA Cloud」) を初めて使われる方を対象に操作手順を解説いたします。内容は下記の通りです。

 

1. HANAインスタンスを作成する

2. テーブルとビュー(SQL View)を作成する

3. SAP Web IDEを設定し、プロジェクトを作成する

4. SAP Web IDEを使ってテーブルを作成し、データをロードする

5. SAP Web IDEを使ってInformation View (HANA View)を作成する

 

今回は「4. SAP Web IDEを使ってテーブルを作成し、データをロードする」です。

 

注意 : 掲載されているスクリーンショットはSAP社内環境のものです。本番環境とは差異がある可能性があります。予めご了承ください。

 

操作の手順は下記の通りです。

1. ネームスペースの作成

2. テーブルの作成

3. CSV データのロード

 

 

サンプルのデータはPart 2 でダウンロードしたファイルを使用します。

 

ネームスペースを作成する

 

この「ネームスペース」という言葉/考え方も初めて出てきますが、基本的には「スキーマ」と同じ考え方です。

テーブルやビューなどのDBオブジェクトの論理的なグループを表すもので、ドメイン構造(xxx.yyy.zzz など) を取ることができます。

なので、オブジェクトをドメイン階層で管理することができるので、便利ですし、イマドキです。

Web IDEでテーブルを作成する場合は、この「ネームスペース」という考え方が主となります。

 

そして、このネームスペースは既に作成されています(!!)

今回の例では、「order-entry.db」というネームスペースを付けていますが、このネームスペースはプロジェクトを作成する時に指定しました。

 

そして、Part 3 のプロジェクトの作成で「Build」していますので、ネームスペースは既に作成されていますので追加の手順は必要ありません。

※ 厳密にはネームスペースは作られるものではないのですが、今は便宜上、「自動的に作られる」という言葉を使っています。

 

テーブルを作成する

 

それでは、Web IDEを使ってテーブルを作成します。まずは、今まで多くのDBエンジニアの皆様が作成していた、「xxxxxx.sql」というSQLのスクリプトにあたるファイルを作成します。

src フォルダを選択し、右クリックして「New」 > 「Database Artifact」を選択します。

「Artifact (アーティファクト)」は「モノ、オブジェクト」に近いニュアンスの言葉で、要は「テーブルやインデックス、シノニムなど、諸々のDBオブジェクトをこれから作ります」という意味になります。

 

今回はテーブルを作成しますが、ファイル名の拡張子が「Artifact」毎に決まっています。

リストから「.hdbtable」を選択してください。

 

まずはcustomers (顧客マスター)テーブルを作成しますのでFile Nameには 「customers」と入力します。

今回は「DBアプリケーション」っぽいニュアンスを出すために小文字にしていますが、特に決まりはありません。

ただし、今回はSQL文で作成したDBオブジェクトと区別するために下記画面の通り、小文字で指定していただけたらと思います。

 

ダウンロードした「customers.hdbtable」ファイルを開いて内容をコピー & ペーストした後、左上のSaveボタンをクリックして保存してください。

-- customers テーブルの作成

COLUMN TABLE "order-entry.db::customers" (
  "CUSTOMERID" INTEGER
, "CITYID" INTEGER
, "COUNTRYID" INTEGER
, "REGIONID" INTEGER
, "CUSTOMER" NVARCHAR(50)
, "CITYNAME" NVARCHAR(50)
, "COUNTRYNAME" NVARCHAR(50)
, "REGIONNAME" NVARCHAR(50)
,  PRIMARY KEY ("CUSTOMERID")
)

 

ファイルを保存したら、「Build」します。「Build」という言葉は少し難しいのですが、要はDBに対してテーブルを作成する操作です。

対象テーブルのファイルを選択し、右クリックで下記画面の通り、Buildを選択し、実行します。

 

「Build」が成功したら、テーブルが作成されているか確認しましょう。

左のメニューボタンから「Database Explorer」を選択して、「Tables」を選択します。customers テーブルが作成されたことが確認できると思います。

ここでの確認ポイントはテーブル名です。テーブル名にはネームスペースも付与されていることが確認できます。

そして、スキーマ名には「ORDER_ENTRY_HDI_1」の文字が…… また、HDIか……

(けど、今はまだ頭の片隅に置いてください)

 

サラリと流してしまいましたが、コピー & ペーストしたテーブルを作成する命令文がSQL文に似ていたものの、「Create Table」文の「Create」がなかったことに違和感を覚えたDBエンジニアの方も多いかと思います。

そうです、その通りです。

このWeb IDEを使ったテーブル作成では、この定義ファイルに列を追加したり、列を削除したり、データ型の桁数を増やしてから「Build」を行うとテーブルにその変更が反映されます。

要は「Alter Table」文を発行しなくてもテーブルの属性変更ができます。

これが「HDI」の良いトコロです。# けど、まだ、HDIの解説は先送りします。

ただし、データ型の変換ができないパターンもあるので、「Alter Table文でできないことは基本的にできない」と憶えておいてください。

 

そして、「ネームスペースがテーブル名に付与される」と記載しましたが、正確にはテーブル名を指定する時は「ネームスペースを指定しなければならない」が正しい表現です。

 

それでは、同じ手順で「products (製品マスター)」テーブルと「orders (オーダー)」 テーブルも作成しましょう。

コピー元のファイルは、「products.hdbtable」、「orders.hdbtable」を各々、使用します。

-- products テーブルの作成

COLUMN TABLE "order-entry.db::products" (
  "PRODUCTID" INTEGER
, "CATEGORYID" INTEGER
, "LINEID" INTEGER 
, "PRODUCTNAME" NVARCHAR(50)
, "PRODUCTDESCRIPTION" NVARCHAR(50)
, "CATEGORYNAME" NVARCHAR(50)
, "CATEGORYDESCRIPTION" NVARCHAR(50)
, "LINENAME" NVARCHAR(50)
, "LINEDESCRIPTION" NVARCHAR(50)
, "DISCONTINUED" INTEGER 
,  PRIMARY KEY ("PRODUCTID")
)
-- orders テーブルの作成

COLUMN TABLE "order-entry.db::orders" (
  "ORDERID" INTEGER 
, "PRODUCTID" INTEGER 
, "CUSTOMERID" INTEGER 
, "EMPLOYEEID" INTEGER 
, "ORDERPERIODID" INTEGER 
, "REQUIREDPERIODID" INTEGER 
, "SHIPPEDPERIODID" INTEGER 
, "SHIPPERID" INTEGER 
, "UNITPRICE" INTEGER 
, "QUANTITY" INTEGER 
, "DISCOUNT" INTEGER 
, "UNITSALES" BIGINT 
, "NETSALES" BIGINT 
, "UNITCOST" INTEGER 
, "COST" INTEGER
,  PRIMARY KEY ("ORDERID", "PRODUCTID")
)

 

下記のようにテーブルが作成されていることを確認してください。

 

CSVデータをロードする

 

CSVデータのロードの方法は、こちらもPart 2で実行した方法と同じです。各テーブルにロードするCSVファイルも同じものを使用します。

 

まずは「customers 」テーブルから始めます。

Database Explorerから対象のテーブルを選択します。

テーブルを右クリックしてメニューから「Import Data」を選択します。

 

対象のCSVファイルを選択し、テーブル定義情報などを確認してからデータをロードします。

 

データがロードされたか確認しましょう。

 

それでは、同じ手順で「products (製品マスター)」テーブルと「orders (オーダー)」 テーブルに対してもデータをロードしましょう。

CSV ファイルは、「Products.csv」、「Orders.csv」を各々、使用します。

 

いかがでしたでしょうか ?

 

今回は、今までの体験した操作をそのまま流用することもできて、少し楽チンでしたね。

さて、次はいよいよ、モデリングの本題である「HANA Viewの作成」です。

 

次は憶えることがたくさん(?) あるかもしれないので、今日は早めに仕事を終えて、気分転換してから次に進みましょう。

 

では、次回もお楽しみに !!

 

1 Comment
You must be Logged on to comment or reply to a post.
  • 変更履歴:ordersテーブルのPrimary Key指定を追記しました。2020/7/8以前に実行された方、お手数ですが、PRIMARY KEY指定の追記をお願いいたします。※ Part 1 – Part 5の手順を実行する範囲においては必須の設定ではありません。