Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Transposição do Big Query


Ainda não há uma maneira legal de fazer isso no BigQuery, mas você pode fazer isso seguindo a ideia abaixo

Etapa 1

Executar abaixo da consulta
SELECT 'SELECT [group], ' + 
   GROUP_CONCAT_UNQUOTED(
      'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
   ) 
   + ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
  SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)

Como resultado - você receberá uma string como abaixo (está formatada abaixo para facilitar a leitura)
SELECT 
    [group], 
    SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
    SUM(IF([date] = "date2", value, NULL)) AS [d_date2] 
FROM YourTable 
GROUP BY [group] 
ORDER BY [group]   

Etapa 2

Basta executar a consulta composta acima

Resultado será como abaixo
group   d_date1 d_date2  
group1  15      30      

Observação 1 :O passo 1 é útil se você tiver muitos grupos para dinamizar tanto trabalho manual. Neste caso - o Passo 1 ajuda você a gerar sua consulta

Observação 2 :essas etapas são facilmente implementadas em qualquer cliente de sua escolha ou você pode executá-las na IU da Web do BigQuery

Você pode ver mais sobre pivotar em meus outros posts.

Como dimensionar a dinâmica no BigQuery?
Observe - há uma limitação de 10.000 colunas por tabela - portanto, você está limitado a 10.000 organizações.
Você também pode ver abaixo como exemplos simplificados (se acima for muito complexo/detalhado):
/>Como transpor linhas para colunas com grande quantidade de dados no BigQuery/SQL?
Como criar colunas de variáveis ​​fictícias para milhares de categorias no Google BigQuery?
Pivot Repeated fields in BigQuery