简体   繁体   English

提取 JSON object 的一部分,它是 BigQuery 表中包含的数组的一部分

[英]Extract a parts of a JSON object that is part of an Array contained in a BigQuery table

I want extract the content of what I think is an Array with JSON in BigQuery.我想在 BigQuery 中提取我认为是 JSON 的数组的内容。

This is Current Table in BigQuery:这是 BigQuery 中的当前表:

CreatitveID创意ID ResponsiveSearchAdHeadlines响应式搜索广告头条
501 501 [{ "assetText": "Object 999 Car", "assetId": 883,"assetPerformanceLabel": "PENDING","assetApprovalStatus": "APPROVED" }, { "assetText": "Die Schönheit des Rennsports", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Mehr erfahren", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Form folgt Funktion", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Hier entdecken", "assetId": 8832, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Eine neue Dimension des Stils", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Alle Details auf einen Blick", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "999 Car Probefahrt", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetAppr [{ "assetText": "Object 999 Car", "assetId": 883,"assetPerformanceLabel": "PENDING","assetApprovalStatus": "APPROVED" }, { "assetText": "Die Schönheit des Rennsports", "assetId" :605,“assetPerformanceLabel”:“待定”,“assetApprovalStatus”:“已批准”},{“assetText”:“Mehr erfahren”,“assetId”:134,“assetPerformanceLabel”:“待定”,“assetApprovalStatus”:“已批准” " }, { "assetText": "Form folgt Funktion", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Hier entdecken", "assetId" : 8832, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Eine neue Dimension des Stils", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus" : "APPROVED" }, { "assetText": "Alle Details auf einen Blick", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "999 Car Probefahrt”,“assetId”:605,“assetPerformanceLabel”:“待定”,“assetAppr ovalStatus": "APPROVED" }, { "assetText": "999 Car Konfigurator", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Angebot anfordern", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Probefahrt vereinbaren", "assetId": 883, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Grandioser Stil", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Einsteigen und losfahren", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Sportlich – rasant – Abenteuer", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Erwarte den Rausch", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }] ovalStatus": "APPROVED" }, { "assetText": "999 Car Konfigurator", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Angebot anfordern ", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Probefahrt vereinbaren", "assetId": 883, "assetPerformanceLabel": "PENDING", " assetApprovalStatus": "APPROVED" }, { "assetText": "Grandioser Stil", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Einsteigen und losfahren ", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Sportlich – rasant – Abenteuer", "assetId": 134, "assetPerformanceLabel": "PENDING" ", "assetApprovalStatus": "APPROVED" }, { "assetText": "Erwarte den Rausch", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }]
501 501 [{ "assetText": "Object 999 Car", "assetId": 883,"assetPerformanceLabel": "PENDING","assetApprovalStatus": "APPROVED" }, { "assetText": "Die Schönheit des Rennsports", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Mehr erfahren", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Form folgt Funktion", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Hier entdecken", "assetId": 8832, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Eine neue Dimension des Stils", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Alle Details auf einen Blick", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "999 Car Probefahrt", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetAppr [{ "assetText": "Object 999 Car", "assetId": 883,"assetPerformanceLabel": "PENDING","assetApprovalStatus": "APPROVED" }, { "assetText": "Die Schönheit des Rennsports", "assetId" :605,“assetPerformanceLabel”:“待定”,“assetApprovalStatus”:“已批准”},{“assetText”:“Mehr erfahren”,“assetId”:134,“assetPerformanceLabel”:“待定”,“assetApprovalStatus”:“已批准” " }, { "assetText": "Form folgt Funktion", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Hier entdecken", "assetId" : 8832, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Eine neue Dimension des Stils", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus" : "APPROVED" }, { "assetText": "Alle Details auf einen Blick", "assetId": 605, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "999 Car Probefahrt”,“assetId”:605,“assetPerformanceLabel”:“待定”,“assetAppr ovalStatus": "APPROVED" }, { "assetText": "999 Car Konfigurator", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Angebot anfordern", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Probefahrt vereinbaren", "assetId": 883, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Grandioser Stil", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Einsteigen und losfahren", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Sportlich – rasant – Abenteuer", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Erwarte den Rausch", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }] ovalStatus": "APPROVED" }, { "assetText": "999 Car Konfigurator", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Angebot anfordern ", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Probefahrt vereinbaren", "assetId": 883, "assetPerformanceLabel": "PENDING", " assetApprovalStatus": "APPROVED" }, { "assetText": "Grandioser Stil", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Einsteigen und losfahren ", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }, { "assetText": "Sportlich – rasant – Abenteuer", "assetId": 134, "assetPerformanceLabel": "PENDING" ", "assetApprovalStatus": "APPROVED" }, { "assetText": "Erwarte den Rausch", "assetId": 134, "assetPerformanceLabel": "PENDING", "assetApprovalStatus": "APPROVED" }]

Desired resulting table:期望的结果表:

CreatitveID创意ID ResponsiveSearchAdHeadlines_assetText_ID ResponsiveSearchAdHeadlines_assetText_ID ResponsiveSearchAdHeadlines_assetText ResponsiveSearchAdHeadlines_assetText
501 501 883 883 Object 999 Car Object 999车
501 501 605 605 Die Schönheit des Rennsports体育运动
501 501 134 134 Mehr erfahren Mehr erfahren
... ... ... ... ... ...

I believe I should use JSON_EXTRACT_SCALAR(), but I don´t really know how the whole query should look like.我相信我应该使用 JSON_EXTRACT_SCALAR(),但我真的不知道整个查询应该是什么样子。

Some Ideas?一些想法?

Consider below approach考虑以下方法

select CreatitveID, 
  json_value(Headline, '$.assetId') assetId,
  json_value(Headline, '$.assetText') assetText
from your_table, 
unnest(json_extract_array(ResponsiveSearchAdHeadlines)) Headline    

if applied to sample data in your question - output is如果应用于您问题中的示例数据 - output 是

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM