【发布时间】:2020-06-02 22:12:47
【问题描述】:
我想在 SQL 表的给定列中过滤掉键(在字符串数组中给出 - ["key2"]),例如:
{ key1: val1, key2: val2, key3: val3 }
|--row---|-object--|---value----|
|---1----|--obj1---|--sum(obj1)-|
|---2----|--obj2---|--sum(obj2)-|
|---3----|--obj3---|--sum(obj3)-|
我希望能够通过使用 SQL 来做到这一点,并为每一行并行过滤数组的所有键。
例如,如果我有这些对象:
obj1 = "{ key1: val1, key2: val2, key3: val3 }"
obj2 = "{ key1: val1, key2: val2 }"
obj3 = "{ key1: val1, key2: val2, key3: val3, key4: val4, key5: val5 }"
还有一个 ["key1", "key4"] 的数组
我会得到带有新对象和新值的新表:
obj1 = "{ key2: val2, key3: val3 }" , val = val2+val3
obj2 = "{ key2: val2 }" , val = val2
obj3 = "{ key2: val2, key3: val3, key5: val5 }" , val = val2+val3+val5
有可能吗?
我尝试使用 JSON_EXTRACTOR 以将对象提取为 JSON 格式并使用过滤器函数逐一操作行,但是当我考虑它时效率不是很高,并且它没有使用查询来做过滤。
【问题讨论】:
-
找到了一个使用 JSON_EXTRACT 的解决方案:动态地将“JSON_EXTRACT(object, '$.obj1') as obj1,”字符串附加到 SELECT。 * 关于效率 - 我还不知道它是否是最好的解决方案以及它是否可扩展。
标签: javascript sql google-cloud-platform