Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays BigQuery取消对数组的测试-获取副本_Arrays_Google Cloud Platform_Google Bigquery_Unnest - Fatal编程技术网

Arrays BigQuery取消对数组的测试-获取副本

Arrays BigQuery取消对数组的测试-获取副本,arrays,google-cloud-platform,google-bigquery,unnest,Arrays,Google Cloud Platform,Google Bigquery,Unnest,我正在处理BQ中的GCP账单查询。但在以代价提取数组时,我得到了错误的值,比如unnest以行格式返回数组元素。因此,如果一行的数组中有两个元素,那么我将得到两行 如: 实际阵列: 用Unnest: 问题: 我不想要重复的成本值,有人能帮我查询吗?而不是 SELECT labels,cost from cte , UNNEST(labels) AS la 试一试 SELECT la, cost from cte , UNNEST(labels) AS la 更新 而不是 SELE

我正在处理BQ中的GCP账单查询。但在以代价提取数组时,我得到了错误的值,比如unnest以行格式返回数组元素。因此,如果一行的数组中有两个元素,那么我将得到两行

如: 实际阵列: 用Unnest: 问题: 我不想要重复的成本值,有人能帮我查询吗?

而不是

SELECT labels,cost from cte ,
UNNEST(labels) AS la   
试一试

SELECT la, cost from cte ,
UNNEST(labels) AS la   
更新

而不是

SELECT labels,cost from cte ,
UNNEST(labels) AS la   
试一试

SELECT la, cost from cte ,
UNNEST(labels) AS la   
更新


此查询再次显示重复项。以前的结果:。使用上述查询:。在两个时间里,成本字段是重复的。我希望,你至少认识到上面的答案指出了你使用标签而不是LA的问题之一——如果这是一个案例-考虑投票。同时,你能解释一下你期望在哪里看到成本,在哪里看不到成本,以及为什么要这样做吗?所以我们可以帮助你通过sqlyeah来表达这种逻辑。我在这里解释了完整的要求:或者我在这里有另一个问题:不幸的是,它仍然不清楚。大多数情况下,看起来您已经将标签作为一个重复字段,然后您正试图将其反转为“返回到数组”。原因是什么?你应该更详细地阐述你的用例,否则我们只能猜测我想根据标签获得资源的账单,所以,如果我有两个不同的标签,然后,在取消BQ测试的同时,在第2行中提取2个标签,并为这2行添加该资源的成本,例如:我有一个带有env:prod database:mysql标记的虚拟机,该虚拟机的总成本为10美元,现在实际计费的数据如下第1列:[{key:env,value:prod},{key:database,value:mysql}]第2列成本:10,但如果不按la.key、la.value、从my_tbl中选择la.key、la.value、cost,则将UNNESTlabels按la.key、la.value、cost分组。此查询显示,再次重复。以前的结果:。使用上述查询:。在两个时间里,成本字段是重复的。我希望,你至少认识到上面的答案指出了你使用标签而不是LA的问题之一——如果这是一个案例-考虑投票。同时,你能解释一下你期望在哪里看到成本,在哪里看不到成本,以及为什么要这样做吗?所以我们可以帮助你通过sqlyeah来表达这种逻辑。我在这里解释了完整的要求:或者我在这里有另一个问题:不幸的是,它仍然不清楚。大多数情况下,看起来您已经将标签作为一个重复字段,然后您正试图将其反转为“返回到数组”。原因是什么?你应该更详细地阐述你的用例,否则我们只能猜测我想根据标签获得资源的账单,所以,如果我有两个不同的标签,然后,在取消BQ测试的同时,在第2行中提取2个标签,并为这2行添加该资源的成本,例如:我有一个带有env:prod database:mysql标记的虚拟机,该虚拟机的总成本为10美元,现在实际计费的数据如下第1列:[{key:env,value:prod},{key:database,value:mysql}]第2栏成本:10但如果不选择la.key,la.value,则从我的tbl中选择la.key,la.value,cost,UNNESTlabels作为la group by la.key,la.value,cost是的,我已将此标记为答案:刚才投了赞成票。谢谢!感谢你是的,我已经把这个标记为一个答案:刚才投了赞成票。谢谢!感激
SELECT 
  ARRAY(
    SELECT AS STRUCT 
      JSON_EXTRACT_SCALAR(kv, '$.key') key, 
      JSON_EXTRACT_SCALAR(kv, '$.value') value 
    FROM UNNEST(SPLIT(labels, '},{')) kv_temp, 
    UNNEST([CONCAT('{', REGEXP_REPLACE(kv_temp, r'^\[{|}]$', ''), '}')]) kv
  ) labels,
  cost
FROM cte