Сводные данные в стандарте BigQuery SQL Просмотреть определение - PullRequest
0 голосов
/ 27 марта 2020

Я не уверен, возможно ли это с некоторыми из новых возможностей сценариев BigQuery, пользовательских функций, функций массива / строки (или чего-либо еще!), Однако я просто не могу понять это.

Я пытаюсь написать SQL для представления в BigQuery, которое динамически определяет столбцы на основе результатов запроса, аналогично сводной таблице в электронной таблице / инструменте BI (или плавлении в pandas). Я могу сделать это внешне в Python или жестко закодировать его, используя операторы case, но я уверен, что решение SQL для этого было бы невероятно полезным для огромного числа людей.

По сути, я я пытаюсь написать запрос, который преобразует таблицу следующим образом:

year | name    | number
-----------------------
1963 | Michael | 9246
1961 | Michael | 9055
1958 | Michael | 9203
1957 | Michael | 9116
1953 | Robert  | 9061
1952 | Robert  | 9205
1951 | Robert  | 9054
1948 | Robert  | 9015
1947 | Robert  | 10025
1947 | John    | 9634
1946 | Robert  | 9295
----------------------

SQL to generate initial example table:
SELECT   year, name, number
FROM     `bigquery-public-data.usa_names.usa_1910_2013` 
WHERE    number > 9000
ORDER BY year DESC

В таблицу со следующей структурой:

year | John  | Michael | Robert
---------------------------------
1946 |       | 9,295   |       
1947 | 9,634 |         |  10,025
1948 |       | 9,015   |
...

Затем необходимо подключиться к нижестоящим инструментам , не требуя обслуживания при изменении данных. Я знаю, что это не всегда хорошая идея, и что аккуратные данные форм более универсально полезны, но есть еще сценарий ios, где такое поведение желательно.

Я видел несколько решений здесь, но все они, кажется, включают генерацию строки и затем ручную вставку запроса ... Я могу сделать это через API BigQuery, но я отчаянно пытаюсь найти решение Dynami c, использующее только SQL, поэтому мне не нужно поддерживать внешняя функция.

Заранее спасибо за любые указатели!

...