簡體   English   中英

在 bigQuery 中僅返回非空鍵/值

[英]Returning only non-null key/value in bigQuery

我在 bigQuery 中有一個 object,它存儲了系統中所有可能的參數。 因此,在引擎蓋下的某個地方,“參數”object 有很多鍵,當我構建對SELECT param的查詢時,它會返回很多帶有 null 的列,並且可能只有 1 個具有值,這使得無法分析為output 表非常寬。

我如何編寫查詢以使其返回 1 列,只有非 null 鍵/值對?

IE

而不是返回:

param.phoneparam.lobparam.destinationparam.idparam.1param.2等具有null

在此處輸入圖像描述

我想看到一個值為{"e_line_of_business":"inte.net"}或任何其他非空鍵/值的列。 可以被字符串化。

您可能會考慮以下方法。

WITH sample_data AS (
  SELECT STRUCT(STRING(null) AS phone, STRING(null) AS lob, STRING(null) AS destination, 'internet' AS e_line_of_business, STRING(null) AS param1) params
   UNION ALL
  SELECT STRUCT(STRING(null) AS phone, STRING(null) AS lob, STRING(null) AS destination, 'internet' AS e_line_of_business, 'value_1' AS param1)
   UNION ALL
  SELECT STRUCT('01012345678' AS phone, 'web' AS lob, STRING(null) AS destination, null AS e_line_of_business, null AS param1)
)
SELECT params, REPLACE(REGEXP_REPLACE(TO_JSON_STRING(params), r'"[^,{]+"\:null,?', ''), ',}', '}') non_nulls 
  FROM sample_data;

查詢結果

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM