update20260427

This commit is contained in:
2026-04-27 11:04:09 +08:00
commit 3e14e78af3
173 changed files with 62579 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
-- Databricks notebook source
----------------------------------------------------------
--修改时间20241213
--Fanxujia
--
--MA报告以及AIA报告的url链接PBI上做跳转的链接
----------------------------------------------------------
insert overwrite table dm.dm_td_report_url
(ReportName,URL)
select reportname,url
from dwd.dwd_gnd_ims_ma_aia_redirection

View File

@@ -0,0 +1,110 @@
-- Databricks notebook source
-- DBTITLE 1,DDL语句定义表
-- CREATE OR REPLACE TABLE dwd.dwd_ext_email_warning (
-- data_source STRING COMMENT '数据源名称',
-- max_data STRING COMMENT '数据源最新的日期YYYYMM格式',
-- record_date STRING COMMENT '记录数据的日期',
-- etl_timestamp TIMESTAMP COMMENT 'ETL运行时间')
-- USING delta
-- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWD/dwd_ext_email_warning'
-- ;
-- CREATE OR REPLACE TABLE dws.dws_ext_email_warning (
-- data_source STRING COMMENT '数据源名称',
-- max_data STRING COMMENT '数据源最新的日期YYYYMM格式',
-- if_update INT COMMENT '0代表没有更新1代表更新过数据源',
-- etl_timestamp TIMESTAMP)
-- USING delta
-- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWS/dws_ext_email_warning'
-- COMMAND ----------
-- MAGIC %md
-- MAGIC ### dwd层
-- COMMAND ----------
-- DBTITLE 1,删除今天的数据并插入最新数据
delete from dwd.dwd_ext_email_warning
where record_date = date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd');--
insert into dwd.dwd_ext_email_warning
select
data_source
,max(yyyymm) max_data --
,date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd') record_date
,from_utc_timestamp( current_timestamp,'UTC+8') etl_timestamp
from dm.dm_tf_ext_unionall_sales
group by DATA_SOURCE
-- COMMAND ----------
-- MAGIC %md
-- MAGIC ### dws层
-- COMMAND ----------
-- DBTITLE 1,计算出各数据是否更新了数据
create or replace temporary view temp_datasource_update_info as
/*
1 获取今天日期的各数据源的记录情况
2 获取今天之前的上一个周期记录情况
3 今天日期的数据源最新数据月份 与 上一个周期的数据源最新数据月份 是否相等
*/
with
today_record_date (
select
data_source
,max_data
,record_date
from dwd.dwd_ext_email_warning
where record_date = date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd') --
)
,previous_record_date (
select
data_source
,max_data
,record_date
from
(
select
data_source
,max_data
,record_date
,row_number() over( partition by data_source order by record_date desc ) num
from dwd.dwd_ext_email_warning
where record_date <> date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd')
)
where num = 1
)
select
t1.data_source
,t1.max_data
,case when t1.max_data = t2.max_data then 0 else 1 end as if_update
,from_utc_timestamp( current_timestamp,'UTC+8') etl_timestamp
from today_record_date t1
inner join previous_record_date t2 on t1.data_source = t2.data_source
-- COMMAND ----------
-- DBTITLE 1,写入dws层
INSERT OVERWRITE dws.dws_ext_email_warning
select
data_source
,max_data
,if_update
,etl_timestamp
from temp_datasource_update_info
-- COMMAND ----------
-- MAGIC %md
-- MAGIC ### ads层
-- COMMAND ----------
-- select
-- data_source
-- ,max_data
-- ,if_update
-- from dws.dws_ext_email_warning

View File

@@ -0,0 +1,42 @@
# Databricks notebook source
import base64
import time
import urllib.parse
import requests
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
# === 配置区 ===
# Spring Boot 服务端的密钥Base64编码
SECRET_KEY_BASE64 = "qkLkLHPnqNfJ5d3X6DgLpw=="
# 接口地址
# https://mdcuat.astrazeneca.cn/earth/app/mail/task/ma/check
# https://mdc.astrazeneca.cn/earth/app/mail/task/ma/check
API_URL = "https://mdc.astrazeneca.cn/earth/app/mail/task/ma/check"
# === AES 加密函数 ===
def generate_aes_token(secret_key_base64: str) -> str:
# Hutool 的 SecureUtil.aes() 默认是 AES/ECB/PKCS5Padding
secret_key = base64.b64decode(secret_key_base64)
cipher = AES.new(secret_key, AES.MODE_ECB)
# 加密当前时间戳(毫秒)
timestamp = str(int(time.time() * 1000))
encrypted = cipher.encrypt(pad(timestamp.encode("utf-8"), AES.block_size))
# 输出 Base64 编码的 token
return base64.b64encode(encrypted).decode("utf-8")
# === 调用接口 ===
def call_check_api():
token = generate_aes_token(SECRET_KEY_BASE64)
encoded_token = urllib.parse.quote(token)
url = f"{API_URL}?token={encoded_token}"
print(f"请求URL: {url}")
response = requests.get(url)
print("响应状态码:", response.status_code)
print("响应内容:", response.text)
if __name__ == "__main__":
call_check_api()