JSON_DATAGUIDE

目的

集計ファンクションJSON_DATAGUIDEは、JSONデータのセットのデータ・ガイドを計算します。データ・ガイドはCLOBとして返され、渡される形式パラメータに応じてフラット形式または階層形式のいずれかになります。

expr

exprは、JSONオブジェクトまたはJSON配列に評価されるSQL式です。表のJSON列にすることもできます。

書式オプション

返されるデータ・ガイドの書式を指定するには、書式オプションを使用します。次の値のうち1つを設定する必要があります。

  • フラット形式の場合はdbms_json.format_flat

  • 階層形式の場合はdbms_json.format_hierarchical

パラメータがない場合、デフォルトはdbms_json.format_flatです。

フラグのオプション

flagは、次の値を持つことができます。

  • DBMS_JSON.PRETTYを指定すると、返されるデータ・ガイドが適切なインデントで読みやすくなります。

  • データ・ガイドでGeoJSONタイプを自動的に検出するには、DBMS_JSON.GEOJSONを指定します。データ・ガイドによって作成される対応するビュー列は、sdo_geometryタイプになります。

  • DBMS_JSON.GATHER_STATSを指定すると、データ・ガイドで統計情報が収集されます。DBMS_JSON.GATHER_STATSで生成されたデータ・ガイド・レポートには、DBMS_JSON.get_index_dataguideで取得する他のすべての統計フィールドに加えて、新しいフィールドo:sample_sizeがあります。

  • データ・ガイドにDBMS_JSON.DETECT_DATETIMEを指定して、一時型を検出します。データ・ガイドでは、ISO 8601形式に準拠したJSONフィールド値を、文字列型ではなくタイムスタンプ型としてレポートします。

  • すべての値DBMS_JSON.PRETTYDBMS_JSON.GEOJSONおよびDBMS_JSON.GATHER_STATSDBMS_JSON.DETECT_DATETIMEをプラス記号で組み合せることができます。たとえば、DBMS_JSON.GEOJSON+DBMS_JSON.PRETTYまたはDBMS_JSON.GEOJSON+DBMS_JSON.PRETTY+DBMS_JSON.GATHER_STATSです。

次の例では、「JSONドキュメントを含む表の作成: 例」で作成されるj_purchaseorder表を使用します。この表には、po_documentと呼ばれるJSONデータの列が含まれます。この例では、年グループごとにフラット・データ・ガイドを返します。

SELECT EXTRACT(YEAR FROM date_loaded) YEAR,
       JSON_DATAGUIDE(po_document) "DATA GUIDE"
  FROM j_purchaseorder
  GROUP BY extract(YEAR FROM date_loaded)
  ORDER BY extract(YEAR FROM date_loaded) DESC;


YEAR DATA GUIDE
---- ------------------------------------------
2016 [
       {
         "o:path" : "$.PO_ID",
         "type" : "number",
         "o:length" : 4
       },
       {
         "o:path" : "$.PO_Ref",
         "type" : "string",
         "o:length" : 16
       },
       {
         "o:path" : "$.PO_Items",
         "type" : "array",
         "o:length" : 64
       },
       {
         "o:path" : "$.PO_Items.Part_No",
         "type" : "number",
         "o:length" : 16
       },
       {
         "o:path" : "$.PO_Items.Item_Quantity",
         "type" : "number",
         "o:length" : 2
       }
     ]
. . .