Я не уверен, возможно ли это с некоторыми из новых возможностей сценариев 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, поэтому мне не нужно поддерживать внешняя функция.
Заранее спасибо за любые указатели!