-
Notifications
You must be signed in to change notification settings - Fork 74
/
Copy pathsp_demo_internal_external_table_join.sql
67 lines (57 loc) · 3.05 KB
/
sp_demo_internal_external_table_join.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*##################################################################################
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
###################################################################################*/
/*
Use Cases:
- Do you have data on your data lake and inside of BigQuery. You can join this data and just like the data all
resides in the same location.
Description:
- Show that internal and external tables can be joined
- External storage is fast and can be used for uses where a data lake holds tables for your warehousing strategy
Reference:
- https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax
Clean up / Reset script:
n/a
*/
-- Query 1: Join to the External Parquet files
-- Query complete (1.6 sec elapsed, 4.6 GB processed)
SELECT ext_vendor.Vendor_Description,
ext_rate_code.Rate_Code_Description,
ext_payment_type.Payment_Type_Description,
CAST(taxi_trips.Pickup_DateTime AS DATE) AS Pickup_Date,
taxi_trips.Total_Amount
FROM `${project_id}.${bigquery_taxi_dataset}.taxi_trips` AS taxi_trips
INNER JOIN `${project_id}.${bigquery_taxi_dataset}.ext_vendor` AS ext_vendor
ON taxi_trips.Vendor_Id = ext_vendor.Vendor_Id
INNER JOIN `${project_id}.${bigquery_taxi_dataset}.ext_rate_code` AS ext_rate_code
ON taxi_trips.Rate_Code_Id = ext_rate_code.Rate_Code_Id
INNER JOIN `${project_id}.${bigquery_taxi_dataset}.ext_payment_type` AS ext_payment_type
ON taxi_trips.Payment_Type_Id = ext_payment_type.Payment_Type_Id
WHERE taxi_trips.Pickup_DateTime BETWEEN '2019-05-01' AND '2019-05-02';
-- Query 2: Join to the Interal tables
-- Query complete (1.3 sec elapsed, 4.6 GB processed)
SELECT vendor.Vendor_Description,
rate_code.Rate_Code_Description,
payment_type.Payment_Type_Description,
CAST(taxi_trips.Pickup_DateTime AS DATE) AS Pickup_Date,
taxi_trips.Total_Amount
FROM `${project_id}.${bigquery_taxi_dataset}.taxi_trips` AS taxi_trips
INNER JOIN `${project_id}.${bigquery_taxi_dataset}.vendor` AS vendor
ON taxi_trips.Vendor_Id = vendor.Vendor_Id
INNER JOIN `${project_id}.${bigquery_taxi_dataset}.rate_code` AS rate_code
ON taxi_trips.Rate_Code_Id = rate_code.Rate_Code_Id
INNER JOIN `${project_id}.${bigquery_taxi_dataset}.payment_type` AS payment_type
ON taxi_trips.Payment_Type_Id = payment_type.Payment_Type_Id
WHERE taxi_trips.Pickup_DateTime BETWEEN '2019-05-01' AND '2019-05-02';