0您好,我的 aws firehose 中有一个 json 流,该流可以包含基于数据源的指标或报告键值对。它们看起来像这样 -metrics stream{ \'metric&qu...
0你好,
我的 aws firehose 中有一个 json 流,它可以包含基于数据源的指标或报告键值对。它们看起来像这样 -
指标流
{ \'度量\':{ \'k1\':\'v1\',\'k2\':\'v2\',... } }
报告流
{ \'报告\':{ \'k1\':\'v1\',\'k2\':\'v2\',... } }
我正在尝试使用 JQ 表达式来检查 json 是否具有(\'metric\')/具有(\'report\'),然后从 blob 中派生出值。例如,
if has("metric") then "metric" else "report" end
从在线 JQ Playground(ref) 来看,这似乎是有效的语法。但是,当它在 firehose 中被定义为动态分区键时,它会失败。我想从 json 中读取不同的键来定义流的输出。例如,两个键 - K1、K2 都很重要,并且它们依赖于能够解析父键是否是度量/报告。
在此流中,metirc/report 形成第一级分区键,后跟 K1 值。我使用以下 JQ 语法来派生 K1,
if has("metric") then .metric.k1 else .report.k1 end
错误信息 -
JQ 子进程失败,原因是:jq:错误:语法错误,意外的 if(Unix shell 引用问题?)在第 2 行:{dataType:ifhas(\'metric\') then \'metric\' else \'report\' end} jq:1 个编译错误
错误代码:DynamicPartitioning.MetadataExtractionFailed
这里的 JQ 表达式有什么错误。这里看起来很正常,但我无法获得正确的表达式来验证指标或报告键。