Apache spark 如何在Spark中实现2类缓变尺寸(SCD2)
我们希望使用SQL连接在Spark中实现SCD2。我从Github获得了参考资料 但这不是很清楚 有人能提供任何例子或参考来在spark中实现SCD2吗 问候,, 曼尼什语 就更新的Spark SQL而言,有点过时,但下面是一个示例 我使用Spark SQL测试了一个la Ralph Kimball,它工作正常,因此 可信赖的您可以运行它,它也可以工作——但需要文件逻辑和其他类似的功能 待添加-这是基于1.6的ETL SCD2逻辑的主体 语法,但在2.x中运行-这并不难,但需要跟踪 通过并生成测试数据,并跟踪每个步骤: 实际编码: 就更新的Spark SQL而言,有点过时,但下面是一个示例 我使用Spark SQL测试了一个la Ralph Kimball,它工作正常,因此 可信赖的您可以运行它,它也可以工作——但需要文件逻辑和其他类似的功能 待添加-这是基于1.6的ETL SCD2逻辑的主体 语法,但在2.x中运行-这并不难,但需要跟踪 通过并生成测试数据,并跟踪每个步骤: 实际编码:Apache spark 如何在Spark中实现2类缓变尺寸(SCD2),apache-spark,Apache Spark,我们希望使用SQL连接在Spark中实现SCD2。我从Github获得了参考资料 但这不是很清楚 有人能提供任何例子或参考来在spark中实现SCD2吗 问候,, 曼尼什语 就更新的Spark SQL而言,有点过时,但下面是一个示例 我使用Spark SQL测试了一个la Ralph Kimball,它工作正常,因此 可信赖的您可以运行它,它也可以工作——但需要文件逻辑和其他类似的功能 待添加-这是基于1.6的ETL SCD2逻辑的主体 语法,但在2.x中运行-这并不难,但需要跟踪 通过并生成
下面是使用独占连接方法在Spark(数据帧和SQL)中缓慢更改维度类型2的详细实现 假设源正在发送完整的数据文件,即旧记录、更新记录和新记录 步骤: 将最近的文件数据加载到STG表 从HIST表中选择所有过期记录
1. select * from HIST_TAB where exp_dt != '2099-12-31'
使用HIST.column=STG.column上的内部联接和过滤器,选择STG和HIST中未更改的所有记录,如下所示
2. select hist.* from HIST_TAB hist inner join STG_TAB stg on hist.key = stg.key where hist.column = stg.column
选择所有从STG_选项卡更改的新记录和更新记录,使用独占左连接和历史选项卡,并设置到期和生效日期,如下所示
3. select stg.*, eff_dt (yyyy-MM-dd), exp_dt (2099-12-31) from STG_TAB stg left join (select * from HIST_TAB where exp_dt = '2099-12-31') hist
on hist.key = stg.key where hist.key is null or hist.column != stg.column
使用与STG表的独占左联接从HIST表中选择所有更新的旧记录,并设置其到期日期,如下所示:
4. select hist.*, exp_dt(yyyy-MM-dd) from (select * from HIST_TAB where exp_dt = '2099-12-31') hist left join STG_TAB stg
on hist.key= stg.key where hist.key is null or hist.column!= stg.column
从1-4合并所有查询并将覆盖结果插入HIST表
1. select * from HIST_TAB where exp_dt != '2099-12-31'
可以在这里找到Scala和Pyspark中SCD类型2的更详细实现-
希望这有帮助 下面是使用独占连接方法在Spark(数据帧和SQL)中缓慢更改维度类型2的详细实现 假设源正在发送完整的数据文件,即旧记录、更新记录和新记录 步骤: 将最近的文件数据加载到STG表 从HIST表中选择所有过期记录
1. select * from HIST_TAB where exp_dt != '2099-12-31'
使用HIST.column=STG.column上的内部联接和过滤器,选择STG和HIST中未更改的所有记录,如下所示
2. select hist.* from HIST_TAB hist inner join STG_TAB stg on hist.key = stg.key where hist.column = stg.column
选择所有从STG_选项卡更改的新记录和更新记录,使用独占左连接和历史选项卡,并设置到期和生效日期,如下所示
3. select stg.*, eff_dt (yyyy-MM-dd), exp_dt (2099-12-31) from STG_TAB stg left join (select * from HIST_TAB where exp_dt = '2099-12-31') hist
on hist.key = stg.key where hist.key is null or hist.column != stg.column
使用与STG表的独占左联接从HIST表中选择所有更新的旧记录,并设置其到期日期,如下所示:
4. select hist.*, exp_dt(yyyy-MM-dd) from (select * from HIST_TAB where exp_dt = '2099-12-31') hist left join STG_TAB stg
on hist.key= stg.key where hist.key is null or hist.column!= stg.column
从1-4合并所有查询并将覆盖结果插入HIST表
1. select * from HIST_TAB where exp_dt != '2099-12-31'
可以在这里找到Scala和Pyspark中SCD类型2的更详细实现-
希望这有帮助 慢慢改变维度?这是一个很大的答案。希望你这样对待它,因为已经发生了3次投票,你能考虑接受答案吗?慢慢地改变维度?这是一个大的答案。希望你能如愿以偿地考虑到,既然已经发生了3次投票,你能考虑接受这个答案吗?