file_name="ods_eol_cal_report_logistic_his.sh"
columns="id,
model,
eov_id,
type,
avl_group,
tsk,
lob,
key_parts,
request_owner,
receive_date,
finish_date,
remarks,
data,
area,
bill_all,
bill_warranty_in,
afr_1y,
afr_2y,
afr_3y,
inv_ok,
inv_ng,
inv_total,
rec_qty,
eos_last_buy_qty,
eos_fair_qty,
msi_eos_date"
key_id="id"
file_name="${file_name##*/}"
name="${file_name%\.*}"
name_lay="${name%%_*}"
layer="${name_lay}_rma"
tabname="${name}"
echo $name_lay
declare -A site
site["ods"]="dwd"
site["dwd"]="dws"
site["dws"]="dm"
upper_layer="${site[$name_lay]}"
echo "${site[$name_lay]}"
echo "${tabname/$name_lay/$upper_layer}"
function text_replace()
{
local local_text="$(echo "${1}" | tr "\n" " " | tr -s "\t" " ")"
printf "${local_text}"
}
function hive_coalesce_text()
{
local OLD_IFS="$IFS"
local IFS=","
local local_layer="${1}"
local local_tabname="${2}"
local local_columns=($(text_replace "${3}"))
local local_keys=($(text_replace "${4}"))
local IFS="$OLD_IFS"
for i in ${local_columns[@]}
do
local column+="coalesce(a.${i},b.${i}) as ${i},"
done
for i in ${local_keys[@]}
do
local key+="a.${i}=b.${i} and "
done
local coalesce_text="${column::-1}"
local key_text="${key::-5}"
local sql="insert overwrite table ${local_layer}.${local_tabname}
(select ${coalesce_text} from ${local_layer}.${local_tabname}_temp a
full outer join ${local_layer}.${local_tabname} b on "${key_text}")"
local sql=$(text_replace "${sql}")
printf "${sql}"
}
echo $(hive_coalesce_text "$layer" "$tabname" "$columns" "$key_id")