Как преобразовать результаты, возвращенные из bigquery, в Json

# #json #python-3.x #google-bigquery

Вопрос:

В настоящее время с помощью python для извлечения данных из bigquery после получения результата необходимо преобразовать их в формат JSON.Как преобразовать результаты в JSON ?

     Query = """
with data AS (
SELECT
end_time,
total_bytes_processed,
query
FROM
`project-id.region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE  date(end_time) = '2021-07-28'
GROUP BY
end_time,
job_id,
total_bytes_processed,
query
ORDER BY total_bytes_processed DESC
)
select as value
array_agg(struct( end_time,
regexp_extract(query, r'(?i)sfroms `?(?:[w-] .)*([w-] .[w-] )`?s' ) as table,
(total_bytes_processed/1099511627776) * 5 as cost, query) 
order by (total_bytes_processed/1099511627776) * 5  desc limit 1)[offset(0)]
from data
group by timestamp_trunc(end_time, minute)
 """
 

Я нашел эту СТРОКОВУЮ ФУНКЦИЮ для JSON, но мне еще предстоит выяснить, как реализовать ее в этом операторе. помощь или советы, как получить желаемый результат от BigQuery, будут высоко оценены

Ответ №1:

Я мог бы сделать это, используя 2 с предложениями, как показано ниже

 with data AS (
SELECT
end_time,
total_bytes_processed,
query
FROM
region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE  date(end_time) = '2021-07-28'
GROUP BY
end_time,
job_id,
total_bytes_processed,
query
ORDER BY total_bytes_processed DESC
),
DATA1 AS (
select as value
array_agg(struct( end_time,
regexp_extract(query, r'(?i)sfroms `?(?:[w-] .)*([w-] .[w-] )`?s' ) as table,
(total_bytes_processed/1099511627776) * 5 as cost, query) 
order by (total_bytes_processed/1099511627776) * 5  desc limit 1)[offset(0)]
from data as t
group by timestamp_trunc(end_time, minute)
)
select TO_JSON_STRING(t,true) as data
from DATA1 AS t
 

Вот какой результат я получаю

введите описание изображения здесь