SQL Group Concat с переносами строк - PullRequest
0 голосов
/ 06 февраля 2019

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

select group_concat(line,',') as data
from (select concat(cast(date as string), ',',
                    cast(data_1 as string), ',',
                    cast(data_2 as string), ',',
                    cast(data_3 as string), ',',
                    cast(data_4 as string)
                   ) as line
      from [project:dataset.table]
      order by 2 desc
     )

Как бы я мог включить разрыв строки?

Спасибо

1 Ответ

0 голосов
/ 06 февраля 2019

Ниже приведено для стандартного SQL BigQuery

Примечание. Настоятельно рекомендуется использовать стандартный SQL.Если по какой-то причине вы все еще используете устаревший SQL - рассмотрите возможность Миграция на стандартный SQL

#standardSQL
SELECT STRING_AGG(CONCAT(
        CAST(date_col AS STRING), ',',
        CAST(data1 AS STRING), ',',
        CAST(data2 AS STRING)
    ), '\n' ORDER BY date_col) payload
FROM `project.dataset.table` 

или

#standardSQL
SELECT STRING_AGG(CONCAT(
        CAST(date_col AS STRING), ',',
        CAST(data1 AS STRING), ',',
        CAST(data2 AS STRING)
    ), '''
''' ORDER BY date_col) payload
FROM `project.dataset.table` 

Если применить любой из вышеперечисленныхк фиктивным данным ниже

WITH `project.dataset.table` AS (
    SELECT CURRENT_DATE() AS date_col, 123 AS data1, 456 AS data2 UNION ALL
    SELECT '2019-02-01', 222, 333 UNION ALL
    SELECT '2019-02-02', 444, 444 
)

результат равен

2019-02-01,222,333
2019-02-02,444,444
2019-02-06,123,456   

Примечание - результат упорядочен по date_col из-за предложения ORDER BY date_col внутри STRING_AGG() function

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