問合せを実行するサンプル・データ

表1: 航空会社手荷物追跡アプリケーション

例のとおりに操作する場合は、スクリプトbaggageschema_loaddata.sqlをダウンロードして、次に示すように実行します。このスクリプトにより、例で使用する表が作成され、表にデータがロードされます。次に、1つのサンプル行を示します。

乗客のチケット番号ticketNoは、表の主キーです。fullNamegendercontactPhoneおよびconfNo (予約番号)フィールドには、固定スキーマの一部である乗客の情報が格納されます。bagInfo列はスキーマレスJSON配列で、乗客の受託手荷物の追跡情報を表します。

bagInfo配列の各要素が、1つの受託手荷物に対応します。bagInfo配列のサイズは、乗客が受託した荷物の合計を示します。各荷物には、idおよびtagnumフィールドがあります。routingフィールドには、乗客の旅程の経路情報が含まれます。lastActionCodeおよびlastActionDescフィールドには、現在の到着地で荷物に対して実行された最新のアクションとそのアクション・コードが保持されます。lastSeenStationフィールドには、荷物の現在の到着地の空港コードが含まれます。lastSeenTimeGmtフィールドには、最新のアクション時間が含まれます。bagArrivalDateフィールドには、到着地空港への到着予定日が保持されます。bagInfo配列にはさらに、出発地および乗継地の詳細を追跡するフィールドを含むネストされたflightLegs配列が含まれます。

flightLegs配列の各要素は、移動区間に対応します。フィールドflightNoはフライト番号を保持し、flightDateは出発日を保持し、fltRouteSrcは出発地空港コードを保持し、fltRouteDestフィールドは各移動区間の到着地空港コードを保持します。flightLegs配列にはさらに、各移動区間での受託手荷物に実行されたアクティビティを追跡するフィールドを含むネストされたアクション配列が含まれます。

アクション配列の各要素には、フィールドactionAtactionCodeおよびactionTimeが含まれ、各移動区間の出発地空港と到着地空港でタスクを追跡します。

"ticketNo" : 1762344493810,
"fullName" : "Adam Phillips",
"gender" : "M",
"contactPhone" : "893-324-1064",
"confNo" : "LE6J4Z",
 [ {
    "id" : "79039899165297",
    "tagNum" : "17657806255240",
    "routing" : "MIA/LAX/MEL",
    "lastActionCode" : "OFFLOAD",
    "lastActionDesc" : "OFFLOAD",
    "lastSeenStation" : "MEL",
    "flightLegs" : [ {
      "flightNo" : "BM604",
      "flightDate" : "2019-02-01T01:00:00",
      "fltRouteSrc" : "MIA",
      "fltRouteDest" : "LAX",
      "estimatedArrival" : "2019-02-01T03:00:00",
      "actions" : [ {
        "actionAt" : "MIA",
        "actionCode" : "ONLOAD to LAX",
        "actionTime" : "2019-02-01T01:13:00"
      }, {
        "actionAt" : "MIA",
        "actionCode" : "BagTag Scan at MIA",
        "actionTime" : "2019-02-01T00:47:00"
      }, {
        "actionAt" : "MIA",
        "actionCode" : "Checkin at MIA",
        "actionTime" : "2019-02-01T23:38:00"
      } ]
    }, {
      "flightNo" : "BM667",
      "flightDate" : "2019-01-31T22:13:00",
      "fltRouteSrc" : "LAX",
      "fltRouteDest" : "MEL",
      "estimatedArrival" : "2019-02-02T03:15:00",
      "actions" : [ {
        "actionAt" : "MEL",
        "actionCode" : "Offload to Carousel at MEL",
        "actionTime" : "2019-02-02T03:15:00"
      }, {
        "actionAt" : "LAX",
        "actionCode" : "ONLOAD to MEL",
        "actionTime" : "2019-02-01T07:35:00"
      }, {
        "actionAt" : "LAX",
        "actionCode" : "OFFLOAD from LAX",
        "actionTime" : "2019-02-01T07:18:00"
      } ]
    } ],
    "lastSeenTimeGmt" : "2019-02-02T03:13:00",
    "bagArrivalDate" : "2019.02.02T03:13:00"
  } ]
KVSTOREまたはKVLiteを起動し、SQLシェルを開きます。
java -jar lib/kvstore.jar kvlite -secure-config disable
java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore
baggageschema_loaddata.sqlには、次の内容が含まれています:
### Begin Script###
load -file baggageInfo.ddl
import -table baggageInfo -file baggageData.json
### End Script ###
loadコマンドを使用して、スクリプトを実行します。
load -file baggageschema_loaddata.sql

表2: ストリーミング・メディア・サービス - 永続ユーザー・プロファイル・ストア

スクリプトacctstream_loaddata.sqlをダウンロードして、次に示すように実行します。このスクリプトにより、例で使用する表が作成され、表にデータがロードされます。次に、1つのサンプル行を示します。

加入者のアカウントID acct_idは、表の主キーです。フィールドprofile_nameおよびaccount_expiryには、加入者の詳細が含まれます。acct_data列は、加入者の現在のアクティビティを追跡するスキーマレスJSONフィールドです。

acct_data JSONの各要素は、指定された加入者のプロファイル名を持つユーザーを表します。ユーザー・データには、ユーザー情報を保持するフィールドfirstNamelastNameおよびcountryが含まれます。acct_data JSONフィールドにはさらに、ユーザーが視聴した番組を追跡するためのネストされたcontentStreamed JSON配列が含まれます。

contentStreamed配列の各要素には、番組の名前を格納するshowNameフィールドが含まれています。showIdフィールドには、番組の識別子が含まれます。showtypeフィールドは、tvseries、sitcomなどのタイプを示します。genres配列には、番組の分類がリストされます。numSeasonsフィールドには、番組でストリームされたシーズンの合計数が含まれます。contentStreamed JSON配列には、視聴されたエピソードを追跡するためのネストされたseriesInfo JSON配列も含まれています。

seriesInfo配列の各要素には、シーズンを識別するためのseasonNumフィールドが含まれています。numEpisodesフィールドは、特定のシーズンにストリームされたエピソードの合計数を示します。seriesInfo配列にはさらに、各視聴エピソードの詳細を追跡するためのepisodes配列が含まれます。

episodes配列の各要素には、エピソードを識別するためのepisodeIDフィールドが含まれます。episodeNameフィールドには、エピソードの名前が含まれます。lengthMinフィールドには、番組のテレビ放送期間(分)が含まれます。minWatchedフィールドには、ユーザーがエピソードを視聴した期間が含まれます。dateフィールドには、ユーザーが特定のエピソードを視聴した日付が含まれます。

1,
123456789,
"AP",
"2023-10-18",
{
   "firstName": "Adam",
   "lastName": "Phillips",
   "country" : "Germany",
   "contentStreamed": [
      {
         "showName" : "At the Ranch",
         "showId" : 26,
         "showtype" : "tvseries",
         "genres" : ["action", "crime", "spanish"], 
         "numSeasons" : 4,
         "seriesInfo": [
            {
               "seasonNum" : 1,
               "numEpisodes" : 2,
               "episodes": [
                  {
                     "episodeID": 20,
		 	"episodeName" : "Season 1 episode 1",
                     "lengthMin": 85,
                     "minWatched": 85,
                     "date" : "2022-04-18"
                  },
                  {
                     "episodeID": 30,
                     "lengthMin": 60,
		 	"episodeName" : "Season 1 episode 2",
                     "minWatched": 60,
                     "date" : "2022-04-18"
                  }
               ]
            },
            {
               "seasonNum": 2,
               "numEpisodes" : 2,
               "episodes": [
                  {
                     "episodeID": 40,
		        "episodeName" : "Season 2 episode 1",
                     "lengthMin": 50,
                     "minWatched": 50,
                     "date" : "2022-04-25"
                  },
                  {
                     "episodeID": 50,
		 	"episodeName" : "Season 2 episode 2",
                     "lengthMin": 45,
                     "minWatched": 30,
                     "date" : "2022-04-27"
                   }
                ]
             }
          ]
       },
       {
          "seasonNum": 3,
          "numEpisodes" : 2,
          "episodes": [
             {
                "episodeID": 60,
	  	"episodeName" : "Season 3 episode 1",
                "lengthMin": 50,
                "minWatched": 50,
                "date" : "2022-04-25"
             },
             {
                 "episodeID": 70,
		   "episodeName" : "Season 3 episode 2",
                 "lengthMin": 45,
                 "minWatched": 30,
                 "date" : "2022-04-27"
              }
            ]
          }
        ]
      },  
      {
        "showName": "Bienvenu",
        "showId": 15,
        "showtype": "tvseries",
        "genres" : ["comedy", "french"], 
        "numSeasons" : 2,
        "seriesInfo": [
           {
             "seasonNum" : 1,
             "numEpisodes" : 2,
             "episodes": [
                {
                    "episodeID": 20,
		      "episodeName" : "Bonjour",
                   "lengthMin": 45,
                   "minWatched": 45,
                   "date" : "2022-03-07"
                },
                {
                   "episodeID": 30,
		      "episodeName" : "Merci",
                   "lengthMin": 42,
                   "minWatched": 42,
                   "date" : "2022-03-08"
                }
             ]
          }
       ]
    }
  ]
}
KVSTOREまたはKVLiteを起動し、SQLシェルを開きます。
java -jar lib/kvstore.jar kvlite -secure-config disable
java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore
acctstream_loaddata.sqlには、次の内容が含まれています:
### Begin Script###
load -file acctstream.ddl
import -table stream_acct -file acctstreamData.json
### End Script ###
loadコマンドを使用して、スクリプトを実行します。
load -file acctstream_loaddata.sql

表3: JSONコレクション表 - ショッピング・アプリケーション

次のコードは、ショッピング・アプリケーション表にデータを挿入します。

ショッピング・アプリケーションで使用される表は、storeAcctです。この表は、買物客のcontactPhoneが主キーであるドキュメントのコレクションです。行は、個々の買物客のレコードを表します。個々の行にドキュメント内と同じフィールドを含む必要はありません。買物客のプリファレンス(nameaddressemailnotifyなど)は、ドキュメントの最上位フィールドとして格納されます。ドキュメントには、ショッピング関連情報を含む任意の数のJSONフィールド(wishlistcartordersなど)を含めることができます。

JSON配列wishlistには、買物客が希望する商品が含まれます。この配列の各要素には、itempriceperunitなどのネストされたJSONフィールドが含まれており、ウィッシュリスト項目の商品名と価格詳細を格納します。

JSON配列cartには、買物客が購入する予定の商品が含まれます。この配列の各要素には、商品名、単位数および各単位の価格を格納するネストされたJSONフィールド(itemquantitypriceperunitなど)が含まれます。

JSON配列ordersには、買物客が購入した商品が含まれます。この配列の各要素には、orderIDitempriceperunitEstDeliverystatusなどのネストされたJSONフィールドが含まれ、注文番号、商品名、各単位の価格、商品の配送見積日および注文のステータスを格納します。

このデータを使用して、トピックで説明されている例に従うことができます。
insert into  storeAcct(contactPhone, firstName, lastName, address, cart) values("1817113382", "Adam", "Smith", {"street" : "Tex Ave", "number" : 401, "city" : "Houston", "state" : "TX",   "zip" : 95085}, [{"item" : "handbag", "quantity" : 1, "priceperunit" : 350},{"item" : "Lego", "quantity" : 1, "priceperunit" : 5500}]) RETURNING *;

insert into  storeAcct(contactPhone, firstName, lastName, gender, address, notify, cart, wishlist) values("1917113999", "Sharon", "Willard", "F", {"street" : "Maine", "number" : 501, "city" : "San Jose", "state" : "San Francisco",   "zip" : 95095},"yes", [{"item" : "wallet", "quantity" : 2, "priceperunit" : 950},{"item" : "wall art", "quantity" : 1, "priceperunit" : 9500}], [{"item" : "Tshirt", "priceperunit" : 500},{"item" : "Jenga", "priceperunit" : 850}]) RETURNING *;

insert into  storeAcct(contactPhone, firstName, lastName, address, notify, cart, orders) values("1617114988", "Lorenzo", "Phil", {"Dropbox" : "Presidency College", "city" : "Kansas City", "state" : "Alabama",   "zip" : 95065},"yes", [{"item" : "A4 sheets", "quantity" : 2, "priceperunit" : 500},{"item" : "Mobile Holder", "quantity" : 1, "priceperunit" : 700}], [{"orderID" : "101200", "item" : "AG Novels 1", "EstDelivery" : "2023-11-15", "priceperunit" : 950, "status" : "Preparing to dispatch"},{"orderID" : "101200", "item" : "Wallpaper", "EstDelivery" : "2023-11-01", "priceperunit" : 950, "status" : "Transit"}]) RETURNING *;

insert into  storeAcct(contactPhone, firstName, lastName, address, cart, orders) values("1517113582", "Dierdre", "Amador", {"street" : "Tex Ave", "number" : 651, "city" : "Houston", "state" : "TX",   "zip" : 95085}, NULL, [{"orderID" : "201200", "item" : "handbag", "EstDelivery" : "2023-11-01", "priceperunit" : 350},{"orderID" : "201201", "item" : "Lego", "EstDelivery" : "2023-11-01", "priceperunit" : 5500}]) RETURNING *;

insert into  storeAcct(contactPhone, firstName, lastName, address, notify, cart, orders) values("1417114488", "Doris", "Martin", {"Dropbox" : "Presidency College", "city" : "Kansas City", "state" : "Alabama",   "zip" : 95065},"yes", [{"item" : "Notebooks", "quantity" : 2, "priceperunit" : 50},{"item" : "Pens", "quantity" : 2, "priceperunit" : 50}], [{"orderID" : "301200", "item" : "Laptop Bag", "EstDelivery" : "2023-11-15", "priceperunit" : 1950, "status" : "Preparing to dispatch"},{"orderID" : "301200", "item" : "Mouse", "EstDelivery" : "2023-11-02", "priceperunit" : 950, "status" : "Transit"}]) RETURNING *;