INSERT INTO TABLE dws_order_details_orders PARTITION (dt = '20230608') SELECT OrderDate,RequiredDate,UnitPrice,Quantity FROM dwm_order_details_dim JOIN dwm_orders ON dwm_order_details_dim.OrderID = dwm_orders.OrderID GROUP BY OrderDate,RequiredDate,UnitPrice,Quantity;
时间: 2024-04-06 22:32:44 浏览: 145
这是一条 SQL 语句,用于向分区表 dws_order_details_orders 中插入数据。这些数据来自于两个数据表 dwm_order_details_dim 和 dwm_orders,通过 OrderID 字段进行连接(JOIN)。在连接后,按照 OrderDate、RequiredDate、UnitPrice 和 Quantity 字段进行分组(GROUP BY),并选择这些字段作为插入的数据。其中,插入的分区为 dt = '20230608'。
相关问题
#!/bin/bash day1=$(date +%Y%m%d) day2=$(date -d "yesterday" +%Y%m%d) cd /ftpdata/receive/eda_in/in_1851 gunzip *.gz mv 10000_ACCOUNT_BASE_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_account_base.dat mv 10000_ACCOUNT_MANAGER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_account_manager.dat mv 10000_CONSOLE_USER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_console_user.dat mv 10000_REPORT_CRM_MASTER_ORDER_CONFIG_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_crm_master_order_config.dat mv 10000_INNER_ORDER_ITEM_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_inner_order_item.dat mv 10000_REPORT_RESOURCE_SCORE_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_resource_score.dat mv 10000_REPORT_PAYMENT_PLAN_PREVIEW_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_payment_plan_preview.dat mv 10000_ORDERS_ITEM_DEVELOPMENT_DETAIL_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_orders_item_development_detail.dat mv 10000_REPORT_ONE_CORD_ONE_PERSON_MANAGER_LIST_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_1code1person_manager_list.dat mv 10000_CLOUD_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_cloud.dat mv 10000_REPORT_OPOE_CUSTOMER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_report_opoe_customer.dat mv 10000_CLOUD_ACTIVE_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_Cloud_active.dat mv 10000_BUSI_ORDER_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_busi_order.dat mv 10000_BUSI_ORDER_ITEM_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_busi_order_item.dat mv 10000_REPORT_IAM_IDENTITY_DB_${day1}_${day2}_D_00_0001.DAT /data/gbase/impdata/dws_db/dws_db_dws_in_1851_iam_identity.dat exit 0 什么意思
这段脚本是一个简单的Bash脚本,它的主要功能是将指定目录下的文件解压缩(使用gunzip命令),然后将解压后的文件移动到指定目录下(使用mv命令)。其中,脚本中使用了一些变量来获取日期信息,并将日期信息作为文件名的一部分。最后,脚本以退出码0退出。
具体来说,脚本的执行过程如下:
1. 获取当前日期和昨天的日期,并将其保存在day1和day2变量中。
2. 进入指定目录`/ftpdata/receive/eda_in/in_1851`。
3. 使用gunzip命令解压缩该目录下的所有.gz文件。
4. 将解压缩后的文件按照指定的命名规则移动到`/data/gbase/impdata/dws_db`目录下的相应位置。
5. 最后一行的`exit 0`表示脚本成功执行,并以退出码0退出。
这个脚本的作用可能是将某个特定日期的数据文件从一个目录移动到另一个目录,以供后续处理或分析使用。
有一个dws.dws_ty_charge_vehicle_class表,它的建表语句是CREATE TABLE dws.dws_ty_charge_vehicle_class( ty_id string COMMENT '统计表主键', map_id string COMMENT '地图ID', ty_date string COMMENT '统计时间(日)' PARTITIONED BY ( dt_class string, mapid string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',表2的建表语句为CREATE TABLE tmp.public_day( ty_id string COMMENT '统计表主键', map_id string COMMENT '地图ID', ty_date string COMMENT '统计时间(日)' ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'hive 。动态插入分区时 insert overwrite table dws.dws_ty_charge_vehicle_class partition(dt_class,mapid) select ty_id, ty_date, map_id from tmp.fromtpart 会报一个ValidationFailureSemanticException Partition spec {map_id=null, dt_class=null} contains non-partition columns的错误
这个错误是因为你在插入数据时没有指定分区列的值。你需要在INSERT语句中指定分区列的值,例如:
```
INSERT OVERWRITE TABLE dws.dws_ty_charge_vehicle_class PARTITION(dt_class='2022-01-01', mapid='1') SELECT ty_id, ty_date, map_id FROM tmp.public_day;
```
其中,`dt_class`和`mapid`是分区列,需要指定具体的值。在你的错误信息中,`{map_id=null, dt_class=null}`说明你没有指定分区列的值,导致出现了错误。
阅读全文