簡體   English   中英

將Google表格中的水平數據轉換為垂直數據

[英]Transform horizontal to vertical data in google sheets

Google表格中有數千行需要轉換並加載到數據庫中。 數據的布局不適合我們的數據庫架構,因此在將數據加載到數據庫之前需要對其進行轉換。

如何將水平數據以編程方式轉換為垂直數據?

樣本表在這里

源數據(水平布局):

Company name    2017-01-14  2017-02-14  2017-03-14
Company 1       1522        1141        1505
Company 2       1866        1909        1610
Company 3       1726        1237        1057
Company 4       1427        1375        1446
Company 5       1590        1819        1352

所需結果(垂直布局):

2017-01-14  Company 1   1522
2017-01-14  Company 2   1866
2017-01-14  Company 3   1726
2017-01-14  Company 4   1427
2017-01-14  Company 5   1590
2017-02-14  Company 1   1141
2017-02-14  Company 2   1909
2017-02-14  Company 3   1237
2017-02-14  Company 4   1375
2017-02-14  Company 5   1819
2017-03-14  Company 1   1505
2017-03-14  Company 2   1610
2017-03-14  Company 3   1057
2017-03-14  Company 4   1446
2017-03-14  Company 5   1352

數千行...需要轉換並加載到數據庫中

基於此問題的標簽,我假設數據庫為BigQuery

我可以建議將數據原樣加載到BigQuery或創建外部表-之后,您可以使用以下查詢進行所需的轉換

#standardSQL
SELECT 
  ['2017-01-14', '2017-02-14', '2017-03-14'][OFFSET(pos)] day, 
  company_name, 
  value
FROM `project.dataset.table`, 
UNNEST([date_20170114, date_20170214, date_20170314]) value WITH OFFSET pos
-- ORDER BY day, company_name  

您可以使用以下問題中的虛擬數據來測試/玩游戲

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Company 1' company_name, 1522 date_20170114, 1141 date_20170214, 1505 date_20170314 UNION ALL
  SELECT 'Company 2', 1866, 1909, 1610 UNION ALL
  SELECT 'Company 3', 1726, 1237, 1057 UNION ALL
  SELECT 'Company 4', 1427, 1375, 1446 UNION ALL
  SELECT 'Company 5', 1590, 1819, 1352 
)
SELECT 
  ['2017-01-14', '2017-02-14', '2017-03-14'][OFFSET(pos)] day, 
  company_name, 
  value
FROM `project.dataset.table`, 
UNNEST([date_20170114, date_20170214, date_20170314]) value WITH OFFSET pos
ORDER BY day, company_name

該查詢使用header參數為包含數據的所有行創建一行(每個單元格/標題一行)。 然后使用JOIN將所有內容吸入一個單元格。 然后,使用SPLIT將所有數據放入其自己的單元中。 TRANSPOSE函數根據該數據為每個范圍創建一個垂直列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM