2017-08-09 13 views
0

結果に追加するためにこのクエリに結合したい静的テーブルを作成しました。テーブルには「タブレット」という名前のフィールドが含まれています:branch、tablet_id、imei、phone。複合クエリ内の別のテーブルへの内部結合

私はIMEIでマッチして、branch、tablet_id、phoneを結果として列に追加したいと思います。しかし、私はこのクエリの複雑さのためにそうする方法を理解していません。あなたの中にメインクエリを想定し

SELECT 
    event_dim.date AS Date, 
    (
    SELECT 
    value.value.string_value 
    FROM 
    UNNEST(user_dim.user_properties) 
    WHERE 
    key = 'imei_id') AS IMEI, 
    (
    SELECT 
    value.value.string_value 
    FROM 
    UNNEST(user_dim.user_properties) 
    WHERE 
    key = 'division_id') AS Branch, 
    (
    SELECT 
    value.value.string_value 
    FROM 
    UNNEST(user_dim.user_properties) 
    WHERE 
    key = 'truck_id') AS Truck, 
    (
    SELECT 
    value.value.string_value 
    FROM 
    UNNEST(user_dim.user_properties) 
    WHERE 
    key = 'installer_id') AS Installer, 
    COUNT(*) AS Count 
FROM 
    `smarttruck-6d137.com_usiinc_android_ANDROID.app_events_*` 
CROSS JOIN 
    UNNEST(event_dim) AS event_dim 
WHERE 
    event_dim.name = 'app_exception' 
    AND EXISTS (
    SELECT 
    1 
    FROM 
    UNNEST(event_dim.params) 
    WHERE 
    key = 'fatal' 
    AND value.int_value = 1) 
    AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d+)') BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) 
    AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY)) 
GROUP BY 
    Date, 
    IMEI, 
    Branch, 
    Truck, 
    Installer 
ORDER BY 
    Date DESC, 
    Count DESC; 

答えて

2

疑問は正しいです - あなたはすでに私が思ったよりも

#standardSQL 
SELECT 
    date, main.IMEI, main.Branch, Truck, Installer, count, 
    tablets.branch, tablet_id, phone 
FROM (
    SELECT 
    event_dim.date AS DATE, 
    (SELECT value.value.string_value FROM UNNEST(user_dim.user_properties) WHERE key = 'imei_id') AS IMEI, 
    (SELECT value.value.string_value FROM UNNEST(user_dim.user_properties) WHERE key = 'division_id') AS Branch, 
    (SELECT value.value.string_value FROM UNNEST(user_dim.user_properties) WHERE key = 'truck_id') AS Truck, 
    (SELECT value.value.string_value FROM UNNEST(user_dim.user_properties) WHERE key = 'installer_id') AS Installer, 
    COUNT(*) AS COUNT 
    FROM `smarttruck-6d137.com_usiinc_android_ANDROID.app_events_*` 
    CROSS JOIN UNNEST(event_dim) AS event_dim 
    WHERE event_dim.name = 'app_exception' 
    AND EXISTS (SELECT 1 FROM UNNEST(event_dim.params) WHERE key = 'fatal' AND value.int_value = 1) 
    AND REGEXP_EXTRACT(_TABLE_SUFFIX, r'(\d+)') BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) 
    AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY)) 
    GROUP BY DATE, IMEI, Branch, Truck, Installer 
) main 
LEFT JOIN `yourproject.yourdataset.tablets` AS tablets 
ON tablets.imei = main.IMEI 
ORDER BY date DESC, count DESC 
+0

簡単持っているものに登録しよシンプルLEFTを試してみてください。私はそれを構造化する方法を理解しておらず、これは素晴らしいです。ありがとうございました! – Selch

関連する問題