我們正在嘗試使用腳本作爲Doug Mackenzie創建的谷歌BigQuery鏈接:http://online-behavior.com/analytics/funnel-analysis
我們遇到了一些SQL調用問題。Funnel傳統SQL過濾器問題 - BigQuery
我們試圖使用hits.customDimensions.index = 20中的值爲1的過濾器。這些值總是存在,因此一個簡單的過濾器(例如在他的介紹中用作示例的過濾器)不幸是不夠的。 過濾器如:
WHERE hits.customDimensions.index = '20'
不過濾我們需要過濾的內容。
相反,我們需要(我們想象)是這樣的:
WHERE MAX(IF(hits.customDimensions.index=20,hits.customDimensions.value,NULL)) WITHIN hits as locked= '1'
這就是我們試着做它:
FROM (
SELECT
fullVisitorId,
visitId,
MIN(hits.hitNumber) AS firstHit,
MAX(IF(hits.isExit, 1, 0)) AS exit
FROM(
SELECT
*,
MAX(IF(hits.customDimensions.index=20,hits.customDimensions.value,NULL)) WITHIN hits as locked,
FROM
TABLE_DATE_RANGE([[dataset.ga_sessions_], TIMESTAMP('2017-06-01'), TIMESTAMP('2017-06-04'))
)
WHERE
REGEXP_MATCH(hits.page.pagePath, '^/plus/.*/[0-9]')
AND totals.visits = 1
AND locked= '1'
GROUP BY
fullVisitorId,
visitId) s0
這將返回錯誤:
錯誤:無法查詢重複字段customDimensions.index和hits.kunde的叉積。 ;無法查詢重複字段customDimensions.value和hits.kunde的叉積。
我們已經看到有一些建議在上述錯誤的問題上使用FLATTEN
。然而,這似乎給語法錯誤:
FROM (
SELECT
fullVisitorId,
visitId,
MIN(hits.hitNumber) AS firstHit,
MAX(IF(hits.isExit, 1, 0)) AS exit,
MAX(IF(hits.customDimensions.index=20,hits.customDimensions.value,NULL)) WITHIN hits AS locked
FROM
FLATTEN(TABLE_DATE_RANGE([[dataset.ga_sessions_], TIMESTAMP('2017-06-01'), TIMESTAMP('2017-06-04')),hits.customDimension)
WHERE
REGEXP_MATCH(hits.page.pagePath, '^/plus/.*/[0-9]')
AND totals.visits = 1
AND locked = '1'
GROUP BY
fullVisitorId,
visitId) s0
只是給出了錯誤:Error: Not found: Table eb-bigquery:3917183.ga_sessions_
那麼我們如何才能得到過濾器的工作有任何建議,將不勝感激。
想知道,是否有沒有使用BQ的[Standard](https://cloud.google.com/bigquery/docs/reference/standard-sql/)版本的原因? –
我們正在使用的腳本生成的SQL調用在Legacy中執行。 – Sofu5