2015-04-30 39 views

回答

3

你可以做到這一點與交叉連接一起在公共數據集(fh-bigquery:geocode.numbers_65536),你有人數達到65536

SELECT date(DATE_ADD(DAY, i, "DAY")) DAY 
FROM 
    (SELECT '2015-01-01' AS DAY) a CROSS 
JOIN 
    (SELECT i 
    FROM [fh-bigquery:geocode.numbers_65536] 
    WHERE i<=abs(DATEDIFF('2015-01-01','2015-01-15'))) b 
ORDER BY DAY ASC 

此輸出:

+-----+------------+---+ 
| Row | day  | | 
+-----+------------+---+ 
| 1 | 2015-01-01 | | 
| 2 | 2015-01-02 | | 
| 3 | 2015-01-03 | | 
| 4 | 2015-01-04 | | 
| 5 | 2015-01-05 | | 
| 6 | 2015-01-06 | | 
| 7 | 2015-01-07 | | 
| 8 | 2015-01-08 | | 
| 9 | 2015-01-09 | | 
| 10 | 2015-01-10 | | 
| 11 | 2015-01-11 | | 
| 12 | 2015-01-12 | | 
| 13 | 2015-01-13 | | 
| 14 | 2015-01-14 | | 
| 15 | 2015-01-15 | | 
+-----+------------+---+ 

通過使用項目菜單(項目名稱旁邊的下拉菜單,切換到項目➪顯示項目)添加項目fh-bigquery,可以將此數據添加到BigQuery UI中的視圖中。或者,您可以導航到BigQuery UI鏈接https://bigquery.cloud.google.com/project/fh-bigquery 添加項目後,示例數據集(fh-bigquery)將出現在導航面板中。

3

@ Pentium10答案是填充範圍的正確和經典的方式。爲了好玩,我想也提供一個不依賴任何附加表的替代方案。該解決方案是這樣認爲:

  1. 使用RPAD以產生所需長度的字符串,在間隔
  2. 使用SPLIT將其與等於使用天數元素的數目轉換爲重複場的天即數間隔
  3. 使用位置讓每個元素的順序指數在多次實地

這裏是整個查詢放在一起:

select date(date_add(day, i, "DAY")) day 
from (select '2015-01-01' day) a 
cross join 
(select 
    position(
    split(
     rpad('', datediff('2015-01-15','2015-01-01')*2, 'a,'))) i 
from (select NULL)) b; 
相關問題