新的在這裏。我試圖讓每日和每週的活躍用戶隨着時間的推移。他們有30天才被視爲不活躍。我的目標是創建可由user_id分割的圖形,以顯示組羣,區域,類別等。SQL - 不等的左連接BigQuery
我創建了一個日期表來獲取時間段內的每一天,並且我有基礎的簡化訂單表我需要計算這個信息。
我試圖做一個左連接使用下列SQL查詢來獲取日期的狀態:
WITH daily_use AS (
SELECT
__key__.id as user_id
, DATE_TRUNC(date(placeOrderDate), day) as activity_date
FROM `analysis.Order`
where isBuyingGroupOrder = TRUE
and testOrder = FALSE
GROUP BY 1, 2
),
dates as (
SELECT DATE_ADD(DATE "2016-01-01", INTERVAL d.d DAY) AS date
FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY __key__.id) -1 AS d
FROM `analysis.Order`
ORDER BY __key__.id
LIMIT 1096
) AS d
order by 1 desc
)
SELECT
daily_use.user_id
, wd.date as date
, MIN(DATE_DIFF(wd.date, daily_use.activity_date, DAY)) as days_since_last_action
FROM dates AS wd
LEFT JOIN daily_use
ON wd.date >= daily_use.activity_date
AND wd.date < DATE_ADD(daily_use.activity_date, INTERVAL 30 DAY)
GROUP BY 1,2
我收到此錯誤:LEFT OUTER JOIN離不開這是一個平等條件下使用來自兩邊的領域。在BigQuery中,想知道我該如何解決這個問題。我在BigQuery中使用標準SQL。
謝謝
可能的重複:https://stackoverflow.com/questions/43858433/bigquery-joining-on-multiple-conditions-using-subqueries-and-or-statements – phroureo
BigQuery將嘗試讓你使用一個相等的條件,因爲這對於大型表不可擴展(在混洗數據時沒有共用密鑰)。如果你在一個WHERE子句中使用CROSS JOIN會發生什麼? –