|
@@ -57,14 +57,22 @@ case class general_handler(s: SparkSession,
|
|
val inter_cols = getColumns(ods_tab).intersect(getColumns(inc_ods_tab)).diff(Seq("rowkey"))
|
|
val inter_cols = getColumns(ods_tab).intersect(getColumns(inc_ods_tab)).diff(Seq("rowkey"))
|
|
|
|
|
|
val up = inter_cols.contains("update_time") match {
|
|
val up = inter_cols.contains("update_time") match {
|
|
- case true => ",update_time"
|
|
|
|
|
|
+ case true => " DESC,update_time"
|
|
case false => ""
|
|
case false => ""
|
|
}
|
|
}
|
|
|
|
|
|
sql(
|
|
sql(
|
|
s"""
|
|
s"""
|
|
|INSERT ${if (isWindows) "INTO" else "OVERWRITE"} TABLE $ads_tab PARTITION(ds='$inc_ods_ds')
|
|
|INSERT ${if (isWindows) "INTO" else "OVERWRITE"} TABLE $ads_tab PARTITION(ds='$inc_ods_ds')
|
|
- |SELECT ${getColumns(ads_tab).diff(Seq("ds")).mkString(",")}
|
|
|
|
|
|
+ |SELECT ${
|
|
|
|
+ getColumns(ads_tab).diff(Seq("ds"))
|
|
|
|
+ .map(f => {
|
|
|
|
+ if (f.equalsIgnoreCase("deleted"))
|
|
|
|
+ "COALESCE(deleted,0) as deleted"
|
|
|
|
+ else
|
|
|
|
+ f
|
|
|
|
+ }).mkString(",")
|
|
|
|
+ }
|
|
|FROM (
|
|
|FROM (
|
|
| SELECT *
|
|
| SELECT *
|
|
| ,ROW_NUMBER() OVER(PARTITION BY rowkey ORDER BY ds${up} DESC) AS num
|
|
| ,ROW_NUMBER() OVER(PARTITION BY rowkey ORDER BY ds${up} DESC) AS num
|
|
@@ -93,14 +101,19 @@ case class general_handler(s: SparkSession,
|
|
val ads_ds = getLastPartitionsOrElse(ads_tab, null)
|
|
val ads_ds = getLastPartitionsOrElse(ads_tab, null)
|
|
|
|
|
|
|
|
|
|
- if (inc_ods_ds == null || inc_ads_ds == null) {
|
|
|
|
|
|
+ if (inc_ods_ds == null) {
|
|
//没有inc_ods_tab数据,直接重跑全量ods数据
|
|
//没有inc_ods_tab数据,直接重跑全量ods数据
|
|
all()
|
|
all()
|
|
return
|
|
return
|
|
}
|
|
}
|
|
target_ds = inc_ods_ds
|
|
target_ds = inc_ods_ds
|
|
|
|
|
|
- org_ds = inc_ads_ds
|
|
|
|
|
|
+ if (inc_ads_ds == null) {
|
|
|
|
+ org_ds = ads_ds
|
|
|
|
+ } else {
|
|
|
|
+ org_ds = inc_ads_ds
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
if (org_ds.equals(target_ds)) {
|
|
if (org_ds.equals(target_ds)) {
|
|
val inc_ads_sec_ds = getSecondLastPartitionOrElse(inc_ads_tab, null)
|
|
val inc_ads_sec_ds = getSecondLastPartitionOrElse(inc_ads_tab, null)
|
|
@@ -114,7 +127,7 @@ case class general_handler(s: SparkSession,
|
|
val inter_cols = getColumns(ods_tab).intersect(getColumns(inc_ods_tab)).diff(Seq("rowkey"))
|
|
val inter_cols = getColumns(ods_tab).intersect(getColumns(inc_ods_tab)).diff(Seq("rowkey"))
|
|
|
|
|
|
val up = inter_cols.contains("update_time") match {
|
|
val up = inter_cols.contains("update_time") match {
|
|
- case true => ",update_time"
|
|
|
|
|
|
+ case true => " DESC,update_time"
|
|
case false => ""
|
|
case false => ""
|
|
}
|
|
}
|
|
|
|
|
|
@@ -122,7 +135,15 @@ case class general_handler(s: SparkSession,
|
|
sql(
|
|
sql(
|
|
s"""
|
|
s"""
|
|
|INSERT ${if (isWindows) "INTO" else "OVERWRITE"} TABLE $inc_ads_tab PARTITION(ds='$target_ds')
|
|
|INSERT ${if (isWindows) "INTO" else "OVERWRITE"} TABLE $inc_ads_tab PARTITION(ds='$target_ds')
|
|
- |SELECT ${getColumns(inc_ads_tab).diff(Seq("ds")).mkString(",")}
|
|
|
|
|
|
+ |SELECT ${
|
|
|
|
+ getColumns(inc_ads_tab).diff(Seq("ds"))
|
|
|
|
+ .map(f => {
|
|
|
|
+ if (f.equalsIgnoreCase("deleted"))
|
|
|
|
+ "COALESCE(deleted,0) as deleted"
|
|
|
|
+ else
|
|
|
|
+ f
|
|
|
|
+ }).mkString(",")
|
|
|
|
+ }
|
|
|FROM (
|
|
|FROM (
|
|
| SELECT *
|
|
| SELECT *
|
|
| ,ROW_NUMBER() OVER(PARTITION BY rowkey ORDER BY ds${up} DESC) AS num
|
|
| ,ROW_NUMBER() OVER(PARTITION BY rowkey ORDER BY ds${up} DESC) AS num
|
|
@@ -135,6 +156,8 @@ case class general_handler(s: SparkSession,
|
|
| ) AS t2
|
|
| ) AS t2
|
|
|WHERE t2.num = 1
|
|
|WHERE t2.num = 1
|
|
|""".stripMargin)
|
|
|""".stripMargin)
|
|
|
|
+
|
|
|
|
+ addEmptyPartitionOrSkip(inc_ads_tab, target_ds)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|