2016-06-20 10 views
1

BQの2つの異なるテーブルからデータを取得するクエリを作成しようとしています。どちらも同じスキーマを含んでいます。 BQでこれを行うことは可能ですか?複数のテーブルのクエリ

FROM (TABLE_DATE_RANGE([567.ga_sessions_],[1234.ga_sessions_],DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))) 

私にお知らせください。 ありがとう

答えて

1

Table wildcard functionsをBigQuery Legacy SQLでは、特定のテーブルのセットからデータを照会する便利な方法です。
Specific Setここには実際にはDatasetです。
テーブルが異なるデータセットにまたがっている場合は、異なるデータセットに属するサブセットUNION ALLが必要です。二組のあなたの場合は
は、それがされる組合:

SELECT <fields> 
FROM 
    TABLE_DATE_RANGE([567.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')), 
    TABLE_DATE_RANGE([1234.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')) 

added to address latest comment:

SELECT 
    Domains, 
    DATE, 
    EXACT_COUNT_DISTINCT(fullvisitorid) AS UniqueCustomers, 
FROM (
    SELECT 
    *, 
    "SiteA" AS Domains, 
    FROM 
    TABLE_DATE_RANGE([12342.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))), 
(
    SELECT 
    *, 
    "SiteB" AS Domains, 
    FROM 
    TABLE_DATE_RANGE([12311.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))), 
GROUP BY 
    DATE, 
    Domains 
+0

以下のクエリはあなたにとって理にかなっていますか? 日付、EXACT_COUNT_DISTINCT(fullvisitorid)AS UniqueCustomers、FROM(SELECT *、 "SiteA" ASドメイン、FROM TABLE_DATE_RANGE([12342.ga_sessions_]、DATE_ADD(CURRENT_TIMESTAMP()、-2、 'DAY')、DATE_ADD(CURRENT_TIMESTAMP( DATE_ADD(CURRENT_TIMESTAMP()、-2、 'DAY')、DATE_ADD(CURRENT_TIMESTAMP(、-1、 'DAY'))))、FROM(SELECT *、 "SiteB" ASドメイン、FROM TABLE_DATE_RANGE([12311.ga_sessions_] )、-1、 'DAY')))、GROUP BY日付、ドメイン – sam123

+0

いいえ、そうではありません。 –

+0

からデータをグループ化しようとしていますが、この文でFROM句を4回持つ必要がありますか? – sam123

1

これは、標準SQLの_TABLE_SUFFIX擬似列を使用して実行できます。レガシーSQL、このようなもので

SELECT ... 
FROM `myproject.567.ga_sessions_*` 
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_ADD(CURRENT_DATE(), INTERVAL -2 DAY)) AND FORMAT_DATE("%Y%m%d", CURRENT_DATE()) 
UNION ALL 
SELECT ... 
FROM `myproject.1234.ga_sessions_*` 
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_ADD(CURRENT_DATE(), INTERVAL -2 DAY)) AND FORMAT_DATE("%Y%m%d", CURRENT_DATE()) 

:レガシーSQLについては

SELECT 
    <desired fields> 
FROM 
    TABLE_DATE_RANGE([myproject.1234], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')), 
    TABLE_DATE_RANGE([myproject.567], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')) 
+0

エラー:構文エラー:予期しません "" [1:8] – sam123

+0

私はテーブルのスキーマを知らないので、私は使用しました。希望のフィールドの実際のリストを試してみてください。 –

+0

レガシーSQLを使用してこれを行う方法はありますか? – sam123

0

、労働組合へのunion演算子ほどのような二つの別々のTABLE_DATE_RANGEs、カンマを使用します。

FROM 
    TABLE_DATE_RANGE([1234.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')), 
    TABLE_DATE_RANGE([567.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -2, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')) 
関連する問題