Как выполнить динамический запрос в BigQuery? - PullRequest
0 голосов
/ 30 июня 2019

У меня следующий запрос:

WITH modalities as (
  SELECT DISTINCT
        col4 as modalities
  FROM `myproject.table1`

SELECT 
  CONCAT("""
      SELECT 
        col1,col2, col3
        """,
      STRING_AGG( if_clauses , """,
        """), 
      """
      FROM `myproject.table1`
      GROUP BY col1,col2, col3
      ORDER BY col1,col2
      """) as query
FROM 
  (
    SELECT 
      CONCAT ("SUM(IF (col4 = '",tcc, "',1,0)) as ", col4) as if_clauses
    FROM contact_type )

'''

По сути, он генерирует запрос к одному горячему кодированию col4: для каждой модальности мы генерируем новый столбец. Этот запрос возвращает одну строку с одной строковой ячейкой, которая является запросом.

Как мне интерпретировать этот запрос? Я ищу что-то вроде

With query as (...)
SELECT * FROM INTERPRET(QUERY)
...