@GENERATEDディレクティブ

@generatedディレクティブは、表の既存のフィールド/列またはSQL式からフィールドを生成します。

@generatedディレクティブは、オプションの引数pathまたはsqlと、そのJSONフィールド値の計算に使用される値を受け取ります。パス値は、SQL/JSONパス式です。sqlの値は、SQL式または問合せです。GraphQL表関数を使用する場合、サポートされている引数はsqlのみです。path引数は、二面性ビューの作成にのみ使用できます。

ノート:

  • 生成されたフィールドは、二面性ビューとGraphQL表関数の両方によって生成されるドキュメントを拡張します。これらのフィールドは、基礎となる列に直接マップされるのではなく計算され、常に読取り専用です。
  • 生成されたフィールドには列名がありません。別名によってのみ参照できます。

次の例では、sql式を使用してレースの月を検索します:

SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
    race {
        id: race_id
        name
        month @generated(sql: "regexp_substr(race_date, ''[^-]+'', 1, 2)")
    }
');
これは、レースの月を含む次の出力を生成します:
DATA                                                                           
--------------------------------------------------------------------------------
{                                                                              
  "id" : 201,                                                                  
  "name" : "Bahrain Grand Prix",                                               
  "month" : "MAR"                                                              
}                                                                              
                                                                                 
{                                                                              
  "id" : 202,                                                                  
  "name" : "Saudi Arabian Grand Prix",                                         
  "month" : "MAR"                                                              
}                                                                              
                                                                                 
{                                                                              
  "id" : 203,                                                                  
  "name" : "Australian Grand Prix",                                            
  "month" : "MAR"                                                              
}                                                                              
                                                                                 
{                                                                              
  "id" : 204,                                                                  
  "name" : "Japanese Grand Prix",                                              
  "month" : "APR"                                                              
} 
.......................
.......................
24 rows selected.