用例将 json 加载为一行而不是多行,特定于数据集

Posted

技术标签:

【中文标题】用例将 json 加载为一行而不是多行,特定于数据集【英文标题】:Use case to load json as one row instead of many, dataset specific 【发布时间】:2020-01-16 21:31:18 【问题描述】:

我正在处理两种类型的 json 文件,并且遇到了一个错误,似乎建议我将每个文件加载到不同的行中,因为我将文件分解成更小的文件。但是,当我想将一个文件加载到多行中以帮助以后调整展平的数量时。 (出于隐私考虑,所有数据都是虚拟数据)

例如,这是我遇到的不确定是否可以将副本合并到并选择的情况,我还将在下面包含文件格式定义。 数据分成多个文件,使用:

文件格式:

file_format = (type = 'JSON' strip_outer_array = true);

数据样本

["name":"Bigtax","version":"2.2.9","color":"Indigo","available":false,
"name":"Solarbreeze","version":"7.00","color":"Khaki","available":false,
"name":"Toughjoyfax","version":"0.7.1","color":"Turquoise","available":false,
"name":"Otcom","version":"0.95","color":"Indigo","available":false]

还有另一种格式我正在尝试将整个文件上传到多行:

[
	
		color: "red",
		value: "#f00"
	,
	
		color: "green",
		value: "#0f0"
	,
	
		color: "blue",
		value: "#00f"
	,
	
		color: "cyan",
		value: "#0ff"
	,
	
		color: "magenta",
		value: "#f0f"
	,
	
		color: "yellow",
		value: "#ff0"
	,
	
		color: "black",
		value: "#000"
	
]

我正在加载到内部阶段并希望复制到这样的表中:

copy into Colors from @~/staged 
   file_format = (format_name = 'json');
   
   
   SELECT
  value:name::string as "Color Name",
  value:hex::string as "Hex"
  FROM
    file
  , LATERAL FLATTEN(INPUT => SRC:Colors);

【问题讨论】:

【参考方案1】:

我建议查看 Snowflake 文档的这一部分。需要注意的是,为了让 Snowflake 正确地将 JSON 文档加载到表中的单独记录中,它需要是 NDJSON 格式。行终止符变得非常重要:

https://docs.snowflake.net/manuals/user-guide/data-load-transform.html#supported-file-formats

【讨论】:

以上是关于用例将 json 加载为一行而不是多行,特定于数据集的主要内容,如果未能解决你的问题,请参考以下文章

将 NSString 转换为特定于语言环境的 NSNumber

Hive一行拆多行、多行拼一行

流星加载脚本,特定于页面的 CSS

Worklight - 特定于环境的 CSS

Xcode:构建特定于每个文件编译器构建设置的体系结构

CSRF 攻击是不是特定于目标网站