2014-06-12 67 views
17

我在數據集中有一系列表,需要在FLATTENing重複記錄之一的同時查詢所有這些表。例如,像下面的查詢工作正常:FLATTEN with TABLE_DATE_RANGE

SELECT 
    date, 
    customDimensions.value AS customDimension, 
    hits.page.pagePath AS pagePath 
FROM 
    (FLATTEN([<projectId>:<datasetId>.ga_sessions_20130910] , 
    customDimensions)) 
WHERE 
    hits.page.pagePath CONTAINS '/helmets' 
    AND customDimensions.index IN (1,2,3) 

但是,我使用表通配符時遇到FLATTENing麻煩。有人可以幫我解決這個問題嗎?有沒有可能在TABLE_DATE_RANGE中使用FLATTEN?

SELECT 
    date, 
    customDimensions.value AS customDimension, 
    hits.page.pagePath AS pagePath 
FROM 
    (FLATTEN (TABLE_DATE_RANGE ([<project>:<dataset>.ga_sessions_], 
    TIMESTAMP('2013-09-10'), 
    TIMESTAMP ('2014-06-10'))), 
    customDimensions) 
WHERE 
    hits.page.pagePath CONTAINS '/helmets' 
    AND customDimensions.index IN (1,2,3) 

感謝, 傻眼

回答

15

根據參考手冊,該FLATTEN語法是:

...(FLATTEN ([project_name:]datasetId.tableId, flattenField)).. 
...(FLATTEN (subselect_clause, flattenField)).. 

在此基礎上,我會嘗試把一個子查詢子句,像這樣的FLATTEN語句中:

SELECT 
date, 
customDimensions.value AS customDimension, 
hits.page.pagePath AS pagePath 
FROM 
FLATTEN(
(SELECT date, customDimensions, hits FROM TABLE_DATE_RANGE ([<project>:<dataset>.ga_sessions_], 
TIMESTAMP('2013-09-10'),TIMESTAMP ('2014-06-10'))) 
, customDimensions) 
WHERE 
hits.page.pagePath CONTAINS '/helmets' 
AND customDimensions.index IN (1,2,3) 
+2

謝謝!已經探索過這個選項,但希望FLATTEN可以與TABLE_DATE_RANGE一起使用以獲得更清晰的查詢。我想這是不可能的。我將提交功能請求。 –

+0

我同意 - 那會很好。 +1功能請求;-) –

+2

該解決方案無法正常工作。我得到了這個錯誤信息:錯誤:未找到字段'customDimensions'。 –

0

試試這個,它適用於我..

SELECT 
    date, 
    customDimensions.value AS customDimension, 
    hits.page.pagePath AS pagePath 
FROM 
    (FLATTEN (SELECT * FROM TABLE_DATE_RANGE ([<project>:<dataset>.ga_sessions_], 
    TIMESTAMP('2013-09-10'), 
    TIMESTAMP ('2014-06-10'))), 
    customDimensions) 
WHERE 
    hits.page.pagePath CONTAINS '/helmets' 
    AND customDimensions.index IN (1,2,3) 
+0

感謝您使用此代碼段,這可能會提供一些有限的即時幫助。一個[正確的解釋將大大提高其長期價值](/ meta.stackexchange.com/q/114762/350567)通過顯示*爲什麼*這是一個很好的解決方案,並會使它對未來更有用有其他類似問題的讀者。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 – iBug