schema_of_json_agg
集計関数
適用対象: Databricks SQL Databricks Runtime 13.2 以降
すべての JSON 文字列をグループに結合したスキーマを DDL 形式で返します。
構文
schema_of_json_agg(jsonStr [, options] ) [FILTER ( WHERE cond ) ]
この関数は、OVER
句を使用して ウィンドウ 関数として呼び出すこともできます。
引数
jsonStr
:JSON
を持つSTRING
リテラル。options
: キーと値がSTRING
であるMAP
リテラル (省略可能)。 オプションの詳細については、「from_json 関数」を参照してください。cond
: 集計に使用される行をフィルター処理するBOOLEAN
式 (省略可能)。
返品
列名が一連の個別の JSON
キーから派生した、n
個の文字列フィールドを含む構造体の配列定義を保持する STRING
。
フィールドの値は、派生した書式付き SQL 型を保持します。
各レコードのスキーマは、フィールド名別に統合されます。
同じ名前の 2 つのフィールドの種類がレコード間で異なる場合、Azure Databricks では最も一般的でない型が使用されます。
このような型が存在しない場合、型は STRING
として派生します。
たとえば、 INT
と DOUBLE
は DOUBLE
になり、STRUCT<i INT>
と STRING
は STRING
になります。
JSON
データの列の読み取りから取得されるスキーマは、次から派生したスキーマと同じです。
SELECT * FROM json.`/my/data`;
1 つの JSON
文字列のスキーマから派生するには、schema_of_json 関数を使用します。
例
> SELECT schema_of_json_agg(a) FROM VALUES('{"foo": "bar"}') AS data(a);
STRUCT<foo: STRING>
> SELECT schema_of_json_agg(a) FROM VALUES('[1]') AS data(a);
ARRAY<BIGINT>
> CREATE TEMPORARY VIEW data(a) AS VALUES
('{"foo": "bar", "wing": {"ding": "dong"}}'),
('{"top": "level", "wing": {"stop": "go"}}')
> SELECT schema_of_json_agg(a) FROM data;
STRUCT<foo: STRING,top: STRING,wing: STRUCT<ding: STRING, stop: STRING>>