2014-06-12 8 views
17

Ho un intervallo di tabelle in un set di dati e ho bisogno di interrogare tutti mentre FLATTENing uno dei record ripetuti. Ad esempio, una query come la seguente funziona bene:FLATTEN con 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) 

Tuttavia, sto avendo dei problemi durante l'utilizzo di caratteri jolly appiattimento della tabella. Qualcuno può aiutarmi con la sintassi? È possibile utilizzare FLATTEN con TABLE_DATE_RANGE?

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) 

Grazie, Shayan

risposta

15

Secondo manuale di riferimento, la sintassi appiattire è:

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

Sulla base di questo, vorrei provare a mettere una clausola di sub-SELECT all'interno dell'istruzione appiattire in questo modo:

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

Grazie! Ho già esplorato questa opzione, ma speravo che FLATTEN lavorasse con TABLE_DATE_RANGE per ricerche più pulite. Suppongo che non sia ancora possibile. Presenterò una richiesta di funzionalità. –

+0

Sono d'accordo - sarebbe bello. +1 sulla richiesta di funzionalità ;-) –

+2

La soluzione non funziona. Ho ricevuto questo messaggio di errore: Errore: campo 'customDimensions' non trovato. –

0

Prova questo, funziona per me ..

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

Grazie per questo snippet di codice , che potrebbe fornire un aiuto limitato e immediato. Una [spiegazione corretta migliorerebbe notevolmente il suo valore a lungo termine] (// meta.stackexchange.com/q/114762/350567) mostrando * perché * questa è una buona soluzione al problema e lo renderebbe più utile per il futuro lettori con altre domande simili. Per favore [modifica] la tua risposta per aggiungere qualche spiegazione, incluse le ipotesi che hai fatto. – iBug

Problemi correlati