ON句で指定された最初の入力値は、文字ベース(例えば、CHAR/VARCHAR/CLOB値またはDATASET STORAGE FORMAT CSV値)でなければならず、指定されたフォーマットに適合するデータで構成されている必要があります(つまり、指定されたフィールド/レコード区切り記号を使用しているか、またはそれが指定されていない場合はデフォルトです)。後続の入力値は、AvroまたはJSONへの変換の結果に影響しませんが、テーブル演算子を通じて渡され、追加の出力列として指定されます。これにより、生成されたAvroまたはJSONドキュメントをソースCSVデータに関連付けることができます。このことは複数のCSV入力を変換する際に非常に重要です。
CT my_table(id int, csvData VARCHAR(500));
INSERT INTO my_table(1, 'a,b,c,d,e,f\1,2,3,4,5,6\7,8,9,10,11,12');
INSERT INTO my_table(2, 'a,b,c,d,e,f\13,14,15,16,17,18
\19,20,21,22,23,24');
INSERT INTO my_table(3, 'a,b,c,d,e,f\25,26,27,28,29,30
\31,32,33,34,35,36');
SELECT id, data.toJSON() FROM CSV_TO_AVRO
(
ON (SELECT csvData, id FROM my_table)
USING SCHEMA('{"record_delimiter":"\\"}')
) as csvAvro
ORDER BY id, data.a;
id data.TOJSON()
----------- --------------------------------------------------------------
1 {"a":"1","b":"2","c":"3","d":"4","e":"5","f":"6"}
1 {"a":"7","b":"8","c":"9","d":"10","e":"11","f":"12"}
2 {"a":"13","b":"14","c":"15","d":"16","e":"17","f":"18"}
2 {"a":"19","b":"20","c":"21","d":"22","e":"23","f":"24"}
3 {"a":"25","b":"26","c":"27","d":"28","e":"29","f":"30"}
3 {"a":"31","b":"32","c":"33","d":"34","e":"35","f":"36"}