Повторный режим запроса Big Query - PullRequest
0 голосов
/ 17 апреля 2019

Я храню массив значений в таблице больших запросов.

Table Name : Embedding
Table Schema :

    {
        {
            field_name:"description",
            type:"string",
            mode:"nullable"
        },
        {
            field_name:"embedding",
            type:"float",
            mode:"repeated"       
        }
    }

Я могу вставить данные отлично. В веб-интерфейсе bigquery данные предварительного просмотра также отображаются правильно. Но когда я запрашиваю данные, я получаю следующий вывод

SQL-запрос - select * from dataset.Embedding;

Выход -

[["0.3","hello new york"],["0.5","hello new york"],["0.1","hello new york"],["0.9","hello new york"],["0.3","hello new york"],["0.2","hello new york"],......,["0.8","hello new york"]]

Значения повторяются вместе с описанием вместо получения массива значений, таких как ["0.3","0.5","0.1","0.9","0.3",...,"0.8"].

Я попробовал также unnest функциональность. Но не повезло. Как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Попробуйте

SELECT em FROM dataset.Embedding AS E cross join E.embedding AS em

Этот кросс объединяет содержимое массива с таблицей, чтобы вы могли фактически запросить его, как если бы они были скалярными значениями в таблице.

1 голос
/ 17 апреля 2019

Если я правильно понимаю, тогда я думаю, array_agg может помочь вам здесь.

Что-то вроде:

SELECT description, ARRAY_AGG(embedding) AS embedding
FROM dataset.Embedding
GROUP BY 1

Если description не является уникальным, вы можете добавить столбец стиля первичного ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...