Вставить в таблицу с колонкой записи, которая повторяется (рассматриваемый экран)
У меня есть таблица в BigQuery со структурой
И проблема с получением данных для проверки записи
Я пытаюсь вставить таким образом:
query = (
"""
INSERT INTO test.qwe (name, nick, test)
VALUES(@name, @nick, @test)
"""
)
hitTimeStamp = int(time.time())
query_params = [
bigquery.ScalarQueryParameter("name", "STRING", hitTimeStamp),
bigquery.ArrayQueryParameter("nick", "STRING", ["k","TEST"]),
bigquery.StructQueryParameter(
"test",
bigquery.ArrayQueryParameter("a", "STRING", ["adsfwerf","d"]),
bigquery.ArrayQueryParameter("b", "STRING", ["asda","sdfds"]),
),
]
job_config = bigquery.QueryJobConfig()
job_config.query_parameters = query_params
query_job = client.query(
query,
location="US",
job_config=job_config,
)
Я ожидал, что данные будут вставлены! Pls...
1 ответ
Прямо сейчас я вижу пару проблем:
- Ты лечишь
nick
как массив, но он определяется какSTRING
, - Ты лечишь
test
как структура, содержащая массивы, ноNESTED REPEATED
на самом деле массив, содержащий структуры.
К сожалению, похоже, что помощники, которых вы используете из google-cloud-python
библиотека неправильно поддерживает создание вывода, необходимого для NESTED REPEATED
(массив структур) полей. Есть проблема, отмечающая это, которая в настоящее время находится в статусе " To Do" (несмотря на то, что помечена как закрытая, не было никакого решения).
Это возможно через другие библиотеки, а также изначально в синтаксисе BigQuery DML, который будет выглядеть примерно так:
INSERT INTO test.qwe (name,nick,test)
VALUES(
"name value",
"nick value",
[
STRUCT("adsfwerf" AS a,"asda" AS b),
STRUCT("d" AS a,"sdfds" AS b)
]
)
(Обратите внимание, что для работы с ARRAY
а также STRUCT
типы, но это самый краткий, поэтому я выбрал его здесь.)
Таким образом, в качестве обходного пути, вы всегда можете построить запрос вне помощников, предоставленных google-cloud-python
а затем запустить его. Возможно, вы также захотите обойти этот проблемный поток и посмотреть, могут ли сопровождающие проекта предоставить какие-либо другие обходные пути или помочь добавить эту функциональность, или вам может потребоваться поискать другую библиотеку, которая полностью поддерживает эти функции. NESTED REPEATED
поля.