sql-scripts/thelook_ecommerce/create_product_deliveries.sql (19 lines of code) (raw):

/*################################################################################## # 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. ###################################################################################*/ /* Author: Adam Paternostro / Jason Davenport Use Cases: - Use the taxi data to create a set of delivery data Description: - This will create a new table with lots of deliveries of products - The table will be cluster by deliver time and distribution center Show: - New table will be created References: - https://cloud.google.com/bigquery/docs/tables Clean up / Reset script: DROP TABLE IF EXISTS `${project_id}.${bigquery_thelook_ecommerce_dataset}.product_deliveries` ; */ -- Create the Delivered Products Table CREATE OR REPLACE TABLE `${project_id}.${bigquery_thelook_ecommerce_dataset}.product_deliveries` CLUSTER BY delivery_time, distribution_center_id AS WITH deliveries AS ( SELECT Dropoff_DateTime, Trip_Distance, PULocationID, Tip_Amount AS Shipping_Min, Fare_Amount AS Shipping_Max, IFNULL(Passenger_Count,1) * 20 AS quantity_to_delivery FROM `${project_id}.${bigquery_taxi_dataset}.taxi_trips` ) SELECT TIMESTAMP_ADD(Dropoff_DateTime, INTERVAL 365 DAY) delivery_time, Trip_Distance AS distance, MOD(PULocationID,10) + 1 AS distribution_center_id, CASE WHEN Shipping_Min < 5 THEN Shipping_Max ELSE Shipping_Min END AS delivery_cost, CAST(ROUND(1+ RAND() * (29120 - 1)) as INT64) product_id, quantity_to_delivery FROM deliveries;