Пифонический, рекурсивный и функциональный подход к разгадке произвольных деревьев JSON:
handlers = {
list: iterate,
dict: delve,
str: emit_li,
float: emit_li,
}
def emit_li(stuff, strong=False):
emission = '<li><strong>%s</strong></li>' if strong else '<li>%s</li>'
print(emission % stuff)
def iterate(a_list):
print('<ul>')
map(unravel, a_list)
print('</ul>')
def delve(a_dict):
print('<ul>')
for key, value in a_dict.items():
emit_li(key, strong=True)
unravel(value)
print('</ul>')
def unravel(structure):
h = handlers[type(structure)]
return h(structure)
unravel(data)
, где data - список python (проанализирован из текстовой строки JSON):
data = [
{'data': {'customKey1': 'customValue1',
'customKey2': {'customSubKey1': {'customSubSubKey1': 'keyvalue'}}},
'geometry': {'location': {'lat': 37.3860517, 'lng': -122.0838511},
'viewport': {'northeast': {'lat': 37.4508789,
'lng': -122.0446721},
'southwest': {'lat': 37.3567599,
'lng': -122.1178619}}},
'name': 'Mountain View',
'scope': 'GOOGLE',
'types': ['locality', 'political']}
]
Использование SELECT с записью результата обратно в таблицу
blockquote>SELECT CAST(int_field AS FLOAT) AS float_field, <all_other_fields> FROM YourTable
Этот подход будет проверять всю таблицу
. Чтобы выполнить это - вы должны использовать кнопку «Показать параметр» в веб-интерфейсе BQ Web и правильно настроить параметры, как показано ниже. После того, как вы запустите это - ваша таблица будет иметь этот столбец с поплавком и оригинальным целым типом данных, как вы хотели. Примечание. Вы должны использовать правильное / одноименное имя для int_field и float_field
, если вам просто нужно было добавить новый столбец. Я бы указал вам на Таблицы: patch GBQ API . Я не уверен, что этот API позволяет изменить тип столбца - я сомневаюсь, но легко проверить
Использование Задания: вставить EXTRACT и затем LOAD
blockquote>Здесь вы можете извлечь таблицу в GCS, а затем загрузить ее обратно в GBQ с помощью скорректированной схемы
. Вышеуказанный подход будет: a) исключить стоимость затрат на таблицы запросов (сканирования) и b) может помочь с ограничениями, которые могут возникнуть, если у вас есть сложное смирение (с записями / повторением / вложенными и т. д. тип / режим)