21.7 コンバータを使用する前に(2): データ・ガイドJSONスキーマの作成(オプション)

データ・ガイドJSONスキーマは、構造情報および型情報に加えて、ドキュメント・セット内のフィールドに関する頻度情報を提供します。このようなスキーマを使用すると、移行がどのように進行するかを把握でき、ドキュメント・セットを比較するためのショートカットとして他のJSONスキーマと比較できます。

キーワードFORMAT_SCHEMAを使用して作成されたJSONデータ・ガイドは、通常のドキュメント構造情報および型情報のみでなく、特定のコンテンツに関する統計情報(具体的には、各フィールドについてドキュメントの何パーセントで出現するかドキュメントの何パーセントでどの型の値を持つかおよび各型の値の範囲)も含む特殊なJSONスキーマです。

入力ドキュメント・セットのデータ・ガイドJSONスキーマの作成は、オプション脚注1で、いつでも(入力ドキュメントの転送表が残存しているかぎり)作成できます。ただし、入力ドキュメント・セットの変換を開始する前に作成することをお薦めします。特に、コンバータの構成方法のガイドとして役立つためです。

例21-5 入力ドキュメント・セット用のJSONデータ・ガイドの作成

この例では、Oracle SQLファンクションjson_dataguideを使用して、学生、教師およびコースの入力ドキュメント・セットのデータ・ガイドを作成します。これらは、ドキュメントの検証に使用できるJSONスキーマです。

パラメータDBMS_JSON.FORMAT_SCHEMAは、データ・ガイドが検証に使用可能であることを保証します。パラメータDBMS_JSON.PRETTYは、結果を整形出力します。パラメータDBMS_JSON.GATHER_STATSは、データ・ガイドにo:frequencyなどの統計フィールドを提供します。このフィールドは、特定のフィールドが出現するまたは特定の型の値を持つ、ドキュメントの割合を指定します。

SELECT json_dataguide(data,
                      DBMS_JSON.FORMAT_SCHEMA,
                      DBMS_JSON.PRETTY+DBMS_JSON.GATHER_STATS)
  FROM student_tab;

SELECT json_dataguide(data,
                      DBMS_JSON.FORMAT_SCHEMA,
                      DBMS_JSON.PRETTY+DBMS_JSON.GATHER_STATS)
  FROM teacher_tab;

SELECT json_dataguide(data,
                      DBMS_JSON.FORMAT_SCHEMA,
                      DBMS_JSON.PRETTY+DBMS_JSON.GATHER_STATS)
  FROM course_tab;

関連項目:

  • 『Oracle Database SQL言語リファレンス』「JSON_DATAGUIDE」

  • 定数DBMS_JSON.FORMAT_SCHEMADBMS_JSON.GATHER_STATSおよびDBMS_JSON.PRETTYの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』「DBMS_JSONの定数」を参照してください

学生、教師およびコースの入力ドキュメント・セットの結果のデータ・ガイドを、このトピックで後述するJSONデータ・ガイドの例「学生の入力ドキュメント・セット用のJSONデータ・ガイド」「教師の入力ドキュメント・セット用のJSONデータ・ガイド」および「コースの入力ドキュメント・セット用のJSONデータ・ガイド」に示します。それぞれ、表student_tabteacher_tabおよびcourse_tabJSON型の列dataのドキュメントを記述しています。

JSONスキーマの比較は、ドキュメント・セット全体を比較するための便利なプロキシとして機能します。特に、移行入力ドキュメント・セットと(移行中に提案された、または完全に作成された)二面性ビューでサポートされる出力ドキュメント・コレクションを比較する場合に便利です。

  • 最初の変換ステップとして、PL/SQLファンクションDBMS_JSON_DUALITY.infer_schemaは、移行用に提案されたリレーショナル・スキーマ全体(つまり、提案された二面性ビューとその基礎となる表)を記述するJSONスキーマを生成します。

    ファンクションinfer_schemaによって生成されるJSONスキーマは、データ・ガイドJSONスキーマではありません。二面性ビューはまだないため、統計情報の収集元となるサポートされているドキュメント・コレクションはありません。ただし、移行によって生じる可能性のあるドキュメント・セットの構造および型指定は指定されます。

    このJSONスキーマのビュー部分を使用して、(転送表内の)入力ドキュメント・セットのJSONスキーマと比較できます。

    たとえば、表course_tabの個々の入力ドキュメントを(推測された) course二面性ビューでサポートされる個々のドキュメントと比較するかわりに、このトピックの「コースの入力ドキュメント・セット用のJSONデータ・ガイド」のデータ・ガイドJSONスキーマをinfer_schemaで推測されるJSONスキーマ(「二面性への移行、簡易レシピ」「外れ値がない二面性ビューのINFER_SCHEMAからのJSONスキーマ」を参照)のCOURSE二面性ビュー部分と比較できます。その場合、JSONスキーマの一方または他方の種類のみに関連するフィールド(たとえば、接頭辞"o:"の付いた名前のフィールド(Oracleの場合)や接頭辞"db"の付いた名前のフィールド(データベースの場合)など)を無視できます。

  • 同様に、入力ドキュメント・セットのJSONスキーマを、移行後に置き換える作成済かつ移入済の二面性ビューのJSONスキーマと比較すると、違いを際立たせることができます。たとえば、コースの入力表のデータ・ガイドJSONスキーマ(例"コースのインポート・ドキュメント・セット用のJSONデータ・ガイド")をコースの二面性ビューのデータ・ガイドJSONスキーマと比較できます。データ・ガイド・スキーマは、二面性ビューでサポートされるドキュメントを対応する入力ドキュメントと比較するためのショートカット(プロキシ)として機能します。

例21-6 学生の入力ドキュメント・セット用のJSONデータ・ガイド

このデータ・ガイドでは、転送表student_tabに格納されている学生の入力ドキュメント・セットを要約します。

{
  "type" : "object",
  "o:frequency" : 100,
  "o:last_analyzed" : "2024-12-30T18:12:41",
  "o:sample_size" : 10,
  "required" : true,
  "properties" :
  {
    "age" :
    {
      "oneOf" :
      [
        {
          "type" : "number",
          "o:preferred_column_name" : "age",
          "o:frequency" : 90,
          "o:low_value" : 19,
          "o:high_value" : 21,
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 10,
          "maximum" : 21,
          "minimum" : 19
        },
        {
          "type" : "string",
          "o:length" : 8,
          "o:preferred_column_name" : "age",
          "o:frequency" : 10,
          "o:low_value" : "Nineteen",
          "o:high_value" : "Nineteen",
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 10,
          "maxLength" : 8,
          "minLength" : 8
        }
      ]
    },
    "name" :
    {
      "type" : "string",
      "o:length" : 16,
      "o:preferred_column_name" : "name",
      "o:frequency" : 100,
      "o:low_value" : "Donald P.",
      "o:high_value" : "Ming L.",
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 10,
      "required" : true,
      "maxLength" : 10,
      "minLength" : 6
    },
    "courses" :
    {
      "type" : "array",
      "o:preferred_column_name" : "courses",
      "o:frequency" : 100,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 10,
      "required" : true,
      "items" :
      {
        "properties" :
        {
          "name" :
          {
            "type" : "string",
            "o:length" : 16,
            "o:preferred_column_name" : "name",
            "o:frequency" : 100,
            "o:low_value" : "Advanced Algebra",
            "o:high_value" : "Data Structures",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 10,
            "required" : true,
            "maxLength" : 16,
            "minLength" : 7
          },
          "avgGrade" :
          {
            "oneOf" :
            [
              {
                "type" : "number",
                "o:preferred_column_name" : "avgGrade",
                "o:frequency" : 100,
                "o:low_value" : 75,
                "o:high_value" : 95,
                "o:num_nulls" : 0,
                "o:last_analyzed" : "2024-12-30T18:12:41",
                "o:sample_size" : 10,
                "required" : true,
                "maximum" : 95,
                "minimum" : 75
              },
              {
                "type" : "string",
                "o:length" : 4,
                "o:preferred_column_name" : "avgGrade",
                "o:frequency" : 50,
                "o:low_value" : "TBD",
                "o:high_value" : "TBD",
                "o:num_nulls" : 0,
                "o:last_analyzed" : "2024-12-30T18:12:41",
                "o:sample_size" : 10,
                "maxLength" : 3,
                "minLength" : 3
              }
            ]
          },
          "courseNumber" :
          {
            "type" : "string",
            "o:length" : 8,
            "o:preferred_column_name" : "courseNumber",
            "o:frequency" : 100,
            "o:low_value" : "CS101",
            "o:high_value" : "MATH103",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 10,
            "required" : true,
            "maxLength" : 7,
            "minLength" : 5
          }
        }
      }
    },
    "advisorId" :
    {
      "type" : "number",
      "o:preferred_column_name" : "advisorId",
      "o:frequency" : 100,
      "o:low_value" : 101,
      "o:high_value" : 103,
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 10,
      "required" : true,
      "maximum" : 103,
      "minimum" : 101
    },
    "dormitory" :
    {
      "type" : "object",
      "o:preferred_column_name" : "dormitory",
      "o:frequency" : 100,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 10,
      "required" : true,
      "properties" :
      {
        "dormId" :
        {
          "type" : "number",
          "o:preferred_column_name" : "dormId",
          "o:frequency" : 100,
          "o:low_value" : 201,
          "o:high_value" : 205,
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 10,
          "required" : true,
          "maximum" : 205,
          "minimum" : 201
        },
        "dormName" :
        {
          "type" : "string",
          "o:length" : 4,
          "o:preferred_column_name" : "dormName",
          "o:frequency" : 100,
          "o:low_value" : "ABC",
          "o:high_value" : "XYZ",
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 10,
          "required" : true,
          "maxLength" : 3,
          "minLength" : 3
        }
      }
    },
    "studentId" :
    {
      "type" : "number",
      "o:preferred_column_name" : "studentId",
      "o:frequency" : 100,
      "o:low_value" : 1,
      "o:high_value" : 10,
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 10,
      "required" : true,
      "maximum" : 10,
      "minimum" : 1
    }
  }
}

フィールドagetypeは、(1) number (o:frequency 90を使用)または(2) string (o:frequency 10を使用)のいずれかです。つまり、ドキュメントの90%で数値の年齢が出現し、ドキュメントの10%で文字列の等級が出現します。したがって、フィールドage混合型フィールドです。

同様に、フィールドavgGrade混合型フィールドであり、ドキュメントの100%で等級は数値であり、ドキュメントの50%で等級は文字列です。

コンバータ構成フィールドminFieldFrequencyおよびminTypeFrequencyは、フィールドまたは特定ののフィールドがドキュメント・セット全体で存在しているドキュメントの割合をテストします。

学生のドキュメント内のフィールドはすべて、ドキュメントの100%で存在するため、minFieldFrequencyの値に関係なく、いずれのフィールドも出現の外れ値ではありません。

構成フィールドminTypeFrequencyの値を15にしてコンバータを使用した場合、フィールドageは学生のドキュメントの10%でのみ文字列値で出現する(10 < 15)ため、型出現の外れ値とみなされます。フィールドavgGradeは、いずれの型も学生のドキュメントの15%未満で使用されていないため、型出現の外れ値とはみなされません。

型出現の外れ値として、フィールドageは、コンバータによってSQL型NUMBERの列にマップされます(JSON数値型がフィールドでは優勢)。次に、インポータは、文字列値"Nineteen"を数値に変換しようとして失敗し、age"Nineteen"であるドキュメントに関するエラーをログに記録します。

まれに出現するわけではないが、まれに出現する型を持っているフィールドは、データから削除されません。

number-or-stringというSQLデータ型は存在しないため、非外れ値の混合型フィールドavgGradeはコンバータによってJSON列にマップされ、その列にJSONスキーマが検証チェック制約として適用され、値が常に文字列または数値のいずれかであることを要求します

例21-7 教師の入力ドキュメント・セット用のJSONデータ・ガイド

このデータ・ガイドでは、転送表teacher_tabに格納されている教師の入力ドキュメント・セットを要約します。

{
  "type" : "object",
  "o:frequency" : 100,
  "o:last_analyzed" : "2024-12-30T18:12:41",
  "o:sample_size" : 4,
  "required" : true,
  "properties" :
  {
    "_id" :
    {
      "type" : "number",
      "o:preferred_column_name" : "_id",
      "o:frequency" : 100,
      "o:low_value" : 101,
      "o:high_value" : 104,
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 4,
      "required" : true,
      "maximum" : 104,
      "minimum" : 101
    },
    "name" :
    {
      "type" : "string",
      "o:length" : 16,
      "o:preferred_column_name" : "name",
      "o:frequency" : 100,
      "o:low_value" : "Abdul J.",
      "o:high_value" : "Natalie C.",
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 4,
      "required" : true,
      "maxLength" : 10,
      "minLength" : 8
    },
    "salary" :
    {
      "type" : "number",
      "o:preferred_column_name" : "salary",
      "o:frequency" : 100,
      "o:low_value" : 180000,
      "o:high_value" : 300000,
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 4,
      "required" : true,
      "maximum" : 300000,
      "minimum" : 180000
    },
    "department" :
    {
      "type" : "string",
      "o:length" : 16,
      "o:preferred_column_name" : "department",
      "o:frequency" : 100,
      "o:low_value" : "Computer Science",
      "o:high_value" : "Mathematics",
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 4,
      "required" : true,
      "maxLength" : 16,
      "minLength" : 11
    },
    "phoneNumber" :
    {
      "oneOf" :
      [
        {
          "type" : "string",
          "o:length" : 16,
          "o:preferred_column_name" : "phoneNumber",
          "o:frequency" : 50,
          "o:low_value" : "222-555-022",
          "o:high_value" : "222-555-044",
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 4,
          "maxLength" : 11,
          "minLength" : 11
        },
        {
          "type" : "array",
          "o:preferred_column_name" : "phoneNumber",
          "o:frequency" : 50,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 4,
          "items" :
          {
            "type" : "string",
            "o:length" : 16,
            "o:preferred_column_name" : "scalar_string",
            "o:frequency" : 50,
            "o:low_value" : "222-555-011",
            "o:high_value" : "222-555-023",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 4,
            "maxLength" : 11,
            "minLength" : 11
          }
        }
      ]
    },
    "coursesTaught" :
    {
      "type" : "array",
      "o:preferred_column_name" : "coursesTaught",
      "o:frequency" : 100,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 4,
      "required" : true,
      "items" :
      {
        "properties" :
        {
          "name" :
          {
            "type" : "string",
            "o:length" : 16,
            "o:preferred_column_name" : "name",
            "o:frequency" : 75,
            "o:low_value" : "Advanced Algebra",
            "o:high_value" : "Data Structures",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 4,
            "maxLength" : 16,
            "minLength" : 7
          },
          "courseId" :
          {
            "type" : "string",
            "o:length" : 8,
            "o:preferred_column_name" : "courseId",
            "o:frequency" : 75,
            "o:low_value" : "CS101",
            "o:high_value" : "MATH103",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 4,
            "maxLength" : 7,
            "minLength" : 5
          },
          "classType" :
          {
            "type" : "string",
            "o:length" : 16,
            "o:preferred_column_name" : "classType",
            "o:frequency" : 75,
            "o:low_value" : "In-person",
            "o:high_value" : "Online",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 4,
            "maxLength" : 9,
            "minLength" : 6
          }
        }
      }
    },
    "studentsAdvised" :
    {
      "type" : "array",
      "o:preferred_column_name" : "studentsAdvised",
      "o:frequency" : 100,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 4,
      "required" : true,
      "items" :
      {
        "properties" :
        {
          "name" :
          {
            "type" : "string",
            "o:length" : 16,
            "o:preferred_column_name" : "name",
            "o:frequency" : 75,
            "o:low_value" : "Donald P.",
            "o:high_value" : "Ming L.",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 4,
            "maxLength" : 10,
            "minLength" : 6
          },
          "dormId" :
          {
            "type" : "number",
            "o:preferred_column_name" : "dormId",
            "o:frequency" : 75,
            "o:low_value" : 201,
            "o:high_value" : 205,
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 4,
            "maximum" : 205,
            "minimum" : 201
          },
          "studentId" :
          {
            "type" : "number",
            "o:preferred_column_name" : "studentId",
            "o:frequency" : 75,
            "o:low_value" : 1,
            "o:high_value" : 10,
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 4,
            "maximum" : 10,
            "minimum" : 1
          }
        }
      }
    }
  }
}

フィールドphoneNumbertypeは、(1) stringまたは(2) stringarrayのいずれかです。これらの型それぞれは、教師のドキュメントの50% (o:frequency = 50)で出現します。したがって、これは混合型フィールドです。minTypeFrequencyの値を15にしてコンバータを使用した場合、型出現の外れ値とはみなされません。

文字列または文字列の配列のSQLデータ型がないため、(非外れ値の)混合型フィールドphoneNumberはコンバータによってJSON列にマップされ、その列にJSONスキーマが検証チェック制約として適用され、値が常に文字列または文字列の配列のいずれかであることを要求します

例21-8 コースの入力ドキュメント・セット用のJSONデータ・ガイド

このデータ・ガイドでは、転送表course_tabに格納されているコースの入力ドキュメント・セットを要約します。

{
  "type" : "object",
  "o:frequency" : 100,
  "o:last_analyzed" : "2024-12-30T18:12:41",
  "o:sample_size" : 5,
  "required" : true,
  "properties" :
  {
    "name" :
    {
      "type" : "string",
      "o:length" : 16,
      "o:preferred_column_name" : "name",
      "o:frequency" : 100,
      "o:low_value" : "Advanced Algebra",
      "o:high_value" : "Data Structures",
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 5,
      "required" : true,
      "maxLength" : 16,
      "minLength" : 7
    },
    "Notes" :
    {
      "type" : "string",
      "o:length" : 64,
      "o:preferred_column_name" : "Notes",
      "o:frequency" : 20,
      "o:low_value" : "Prerequisite for Advanced Algebra",
      "o:high_value" : "Prerequisite for Advanced Algebra",
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 5,
      "maxLength" : 33,
      "minLength" : 33
    },
    "teacher" :
    {
      "type" : "object",
      "o:preferred_column_name" : "teacher",
      "o:frequency" : 100,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 5,
      "required" : true,
      "properties" :
      {
        "name" :
        {
          "type" : "string",
          "o:length" : 8,
          "o:preferred_column_name" : "name",
          "o:frequency" : 100,
          "o:low_value" : "Abdul J.",
          "o:high_value" : "Colin J.",
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 5,
          "required" : true,
          "maxLength" : 8,
          "minLength" : 8
        },
        "teacherId" :
        {
          "type" : "number",
          "o:preferred_column_name" : "teacherId",
          "o:frequency" : 100,
          "o:low_value" : 101,
          "o:high_value" : 103,
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 5,
          "required" : true,
          "maximum" : 103,
          "minimum" : 101
        }
      }
    },
    "courseId" :
    {
      "type" : "string",
      "o:length" : 8,
      "o:preferred_column_name" : "courseId",
      "o:frequency" : 100,
      "o:low_value" : "CS101",
      "o:high_value" : "MATH103",
      "o:num_nulls" : 0,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 5,
      "required" : true,
      "maxLength" : 7,
      "minLength" : 5
    },
    "students" :
    {
      "type" : "array",
      "o:preferred_column_name" : "students",
      "o:frequency" : 100,
      "o:last_analyzed" : "2024-12-30T18:12:41",
      "o:sample_size" : 5,
      "required" : true,
      "items" :
      {
        "properties" :
        {
          "name" :
          {
            "type" : "string",
            "o:length" : 16,
            "o:preferred_column_name" : "name",
            "o:frequency" : 100,
            "o:low_value" : "Donald P.",
            "o:high_value" : "Ming L.",
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 5,
            "required" : true,
            "maxLength" : 10,
            "minLength" : 6
          },
          "studentId" :
          {
            "type" : "number",
            "o:preferred_column_name" : "studentId",
            "o:frequency" : 100,
            "o:low_value" : 1,
            "o:high_value" : 10,
            "o:num_nulls" : 0,
            "o:last_analyzed" : "2024-12-30T18:12:41",
            "o:sample_size" : 5,
            "required" : true,
            "maximum" : 10,
            "minimum" : 1
          }
        }
      }
    },
    "creditHours" :
    {
      "oneOf" :
      [
        {
          "type" : "number",
          "o:preferred_column_name" : "creditHours",
          "o:frequency" : 80,
          "o:low_value" : 3,
          "o:high_value" : 5,
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 5,
          "maximum" : 5,
          "minimum" : 3
        },
        {
          "type" : "string",
          "o:length" : 1,
          "o:preferred_column_name" : "creditHours",
          "o:frequency" : 20,
          "o:low_value" : "3",
          "o:high_value" : "3",
          "o:num_nulls" : 0,
          "o:last_analyzed" : "2024-12-30T18:12:41",
          "o:sample_size" : 5,
          "maxLength" : 1,
          "minLength" : 1
        }
      ]
    }
  }
}

フィールドNotesは、ドキュメントの20%でのみ出現します(フィールドo:frequency20)。構成フィールドminFieldFrequencyの値を25にしてコンバータを使用した場合、フィールドNotes出現の外れ値とみなされ、コンバータによってどの列にもマップされません

ただし、構成フィールドuseFlexFieldstrue (デフォルト)の場合、コンバータはフレックス列を作成し、フレックス列が存在するとき、インポータはマップされていないフィールドすべてをフレックス列に格納します。そのため、このデフォルト(useFlexFields = true)の場合、移行後にフィールドNotesが(フレックス列によって)サポートされます。useFlexFields = falseにしてコンバータを使用した場合、インポータはまれなフィールドNotesに関するエラーをログに記録します。

フィールドcreditHourstypeは、(1) number ( o:frequency = 80を使用)または(2) string (o:frequency = 20を使用)のいずれかです。したがって、これは混合型フィールドです。minTypeFrequencyの値を15にしてコンバータを使用した場合、型出現の外れ値とはみなされません

number-or-stringというSQLデータ型は存在しないため、(非外れ値の)混合型フィールドcreditHoursはコンバータによってJSON列にマップされ、その列にJSONスキーマが検証チェック制約として適用され、値が常に文字列または数値のいずれかであることを要求します

関連項目:



脚注一覧

脚注1: JSON-To-Dualityコンバータを使用するには、入力ドキュメント・セットの転送表のみが必要です。