24.11 データ・ガイドの問合せ
データ・ガイドは、一連のJSON文書に関する情報です。Oracle SQLファンクションjson_dataguide
またはPL/SQLファンクションDBMS_JSON.get_index_dataguide
のいずれかを使用することで、取得するフラット・データ・ガイドからの情報を問合せられます。後者の場合、データ・ガイド対応JSON検索索引が、JSONデータ上で定義されている必要があります。
関連項目:
-
Oracle Database SQL言語リファレンス(SQLファンクション
json_dataguide
の詳細) -
Oracle Database SQL言語リファレンス(SQL/JSONファンクション
json_table
の詳細) -
Oracle Database PL/SQLパッケージおよびタイプ・リファレンス(
DBMS_JSON.get_index_dataguide
の詳細) -
Oracle Database SQL言語リファレンス(PL/SQL定数
DBMS_JSON.FORMAT_FLAT
の詳細)
例24-20 JSON_DATAGUIDEを使用して取得したデータ・ガイドの問合せ
この例は、SQL/JSONファンクションjson_dataguide
を使用して、フラット・データ・ガイドを取得します。次に、SQL/JSONファンクションjson_table
によってフィールドo:path
、type
、o:length
から即時に投影された関係する列を問い合せます。投影された列を、作成されたパス列jpath
を基準として辞書順に返します。
DBMS_JSON.GATHER_STATS
がjson_dataguide
の3番目の引数に含まれている場合、返されるデータ・ガイドには統計フィールドも含まれます。
WITH dg_t AS (SELECT json_dataguide(data) dg_doc
FROM j_purchaseorder)
SELECT jt.*
FROM dg_t,
json_table(dg_doc, '$[*]'
COLUMNS
jpath VARCHAR2(40) PATH '$."o:path"',
type VARCHAR2(10) PATH '$."type"',
tlength NUMBER PATH '$."o:length"') jt
ORDER BY jt.jpath;
JPATH TYPE TLENGTH
---------------------------------------- ------------- -------
$."Special Instructions" string 8
$.AllowPartialShipment boolean 4
$.CostCenter string 4
$.LineItems array 512
$.LineItems.ItemNumber number 1
$.LineItems.Part object 128
$.LineItems.Part.Description string 32
$.LineItems.Part.UPCCode number 16
$.LineItems.Part.UnitPrice number 8
$.LineItems.Quantity number 4
$.PONumber number 4
$.PO_LineItems array 64
$.Reference string 16
$.Requestor string 16
$.ShippingInstructions object 256
$.ShippingInstructions.Address object 128
$.ShippingInstructions.Address.city string 32
$.ShippingInstructions.Address.country string 32
$.ShippingInstructions.Address.state string 2
$.ShippingInstructions.Address.street string 32
$.ShippingInstructions.Address.zipCode number 8
$.ShippingInstructions.Phone array 128
$.ShippingInstructions.Phone string 16
$.ShippingInstructions.Phone.number string 16
$.ShippingInstructions.Phone.type string 8
$.ShippingInstructions.name string 16
$.User string 8
例24-21 最小頻度が80%のパスに対する索引データを使用したデータ・ガイドの問合せ
この例では、PL/SQLファンクションDBMS_JSON.get_index_dataguide
を形式の値DBMS_JSON.FORMAT_FLAT
と一緒に使用して、データ・ガイド対応JSON検索索引に格納されているデータ・ガイド情報からフラット・データ・ガイドを取得します。次に、フィールドo:path
、type
、o:length
、o:frequency
からSQL/JSONファンクションjson_table
によって即時に投影された関係する列を問い合せます。
フィールドo:frequency
の値は、文書セット全体で、文書内の各フィールドの発生頻度を記録する統計情報です。文書セットに関して統計情報が収集された場合にのみ、使用できます。所定のフィールドの頻度は、そのフィールドを含む文書数をJSON列内の合計文書数で割った値が割合で表されます。
WITH dg_t AS
(SELECT DBMS_JSON.get_index_dataguide('J_PURCHASEORDER',
'DATA',
DBMS_JSON.FORMAT_FLAT) dg_doc
FROM DUAL)
SELECT jt.*
FROM dg_t,
json_table(dg_doc, '$[*]'
COLUMNS
jpath VARCHAR2(40) PATH '$."o:path"',
type VARCHAR2(10) PATH '$."type"',
tlength NUMBER PATH '$."o:length"',
frequency NUMBER PATH '$."o:frequency"') jt
WHERE jt.frequency > 80;
JPATH TYPE TLENGTH FREQUENCY
---------------------------------------- ------------- -------- ---------
$.User string 8 100
$.PONumber number 4 100
$.LineItems array 512 100
$.LineItems.Part object 128 100
$.LineItems.Part.UPCCode number 16 100
$.LineItems.Part.UnitPrice number 8 100
$.LineItems.Part.Description string 32 100
$.LineItems.Quantity number 4 100
$.LineItems.ItemNumber number 1 100
$.Reference string 16 100
$.Requestor string 16 100
$.CostCenter string 4 100
$.ShippingInstructions object 256 100
$.ShippingInstructions.name string 16 100
$.ShippingInstructions.Address object 128 100
$.ShippingInstructions.Address.city string 32 100
$.ShippingInstructions.Address.state string 2 100
$.ShippingInstructions.Address.street string 32 100
$.ShippingInstructions.Address.country string 32 100
$.ShippingInstructions.Address.zipCode number 8 100
$."Special Instructions" string 8 100
関連トピック
親トピック: JSONデータ・ガイド