問合せを実行するサンプル・データ
表1: 航空会社手荷物追跡アプリケーション
例のとおりに操作する場合は、スクリプトbaggageschema_loaddata.sqlをダウンロードして、次に示すように実行します。このスクリプトにより、例で使用する表が作成され、表にデータがロードされます。次に、1つのサンプル行を示します。
乗客のチケット番号ticketNo
は、表の主キーです。fullName
、gender
、contactPhone
およびconfNo
(予約番号)フィールドには、固定スキーマの一部である乗客の情報が格納されます。bagInfo
列はスキーマレスJSON配列で、乗客の受託手荷物の追跡情報を表します。
bagInfo
配列の各要素が、1つの受託手荷物に対応します。bagInfo
配列のサイズは、乗客が受託した荷物の合計を示します。各荷物には、id
およびtagnum
フィールドがあります。routing
フィールドには、乗客の旅程の経路情報が含まれます。lastActionCode
およびlastActionDesc
フィールドには、現在の到着地で荷物に対して実行された最新のアクションとそのアクション・コードが保持されます。lastSeenStation
フィールドには、荷物の現在の到着地の空港コードが含まれます。lastSeenTimeGmt
フィールドには、最新のアクション時間が含まれます。bagArrivalDate
フィールドには、到着地空港への到着予定日が保持されます。bagInfo
配列にはさらに、出発地および乗継地の詳細を追跡するフィールドを含むネストされたflightLegs
配列が含まれます。
flightLegs
配列の各要素は、移動区間に対応します。フィールドflightNo
はフライト番号を保持し、flightDate
は出発日を保持し、fltRouteSrc
は出発地空港コードを保持し、fltRouteDest
フィールドは各移動区間の到着地空港コードを保持します。flightLegs
配列にはさらに、各移動区間での受託手荷物に実行されたアクティビティを追跡するフィールドを含むネストされたアクション配列が含まれます。
アクション配列の各要素には、フィールドactionAt
、actionCode
および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"
} ]
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の各要素は、指定された加入者のプロファイル名を持つユーザーを表します。ユーザー・データには、ユーザー情報を保持するフィールドfirstName
、lastName
および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"
}
]
}
]
}
]
}
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
が主キーであるドキュメントのコレクションです。行は、個々の買物客のレコードを表します。個々の行にドキュメント内と同じフィールドを含む必要はありません。買物客のプリファレンス(name
、address
、email
、notify
など)は、ドキュメントの最上位フィールドとして格納されます。ドキュメントには、ショッピング関連情報を含む任意の数のJSONフィールド(wishlist
、cart
、orders
など)を含めることができます。
JSON配列wishlist
には、買物客が希望する商品が含まれます。この配列の各要素には、item
やpriceperunit
などのネストされたJSONフィールドが含まれており、ウィッシュリスト項目の商品名と価格詳細を格納します。
JSON配列cart
には、買物客が購入する予定の商品が含まれます。この配列の各要素には、商品名、単位数および各単位の価格を格納するネストされたJSONフィールド(item
、quantity
、priceperunit
など)が含まれます。
JSON配列orders
には、買物客が購入した商品が含まれます。この配列の各要素には、orderID
、item
、priceperunit
、EstDelivery
、status
などのネストされた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 *;