当前位置: 首页 > news >正文

青海企业网站建设公司可口可乐网络营销案例

青海企业网站建设公司,可口可乐网络营销案例,网址如何下载视频,长沙专业做网站的公司在实际工作中会遇到,最近有需求将产品炸开bom到底层,但是ERP中bom数据在一张表中递归存储的,不循环展开,是无法知道最底层原材料是什么。 在ERP中使用pl/sql甚至sql是可以进行炸BOM的,但是怎么使用spark展开&#xff0…

在实际工作中会遇到,最近有需求将产品炸开bom到底层,但是ERP中bom数据在一张表中递归存储的,不循环展开,是无法知道最底层原材料是什么。

        在ERP中使用pl/sql甚至sql是可以进行炸BOM的,但是怎么使用spark展开,并且效率要不Oracle更高效的展开,是个问题。

展开方法

        有以下步骤:

                1. 使用spark sql中sql直接递归展开:

                        优点:可行,且效率很快

                        缺点:一个sql炸到底层,无法添加在炸开过程中的逻辑管控

                2. 一层层的展开BOM,直到没有可以展开的物料为止

                        实际效果:

                                优点:可行,并可以在每一层进行管快

                                优缺点:本质上,并不是递归计算,而是过度有限循环的计算

                                               与一些需求有冲突,比如原需求为递归计算,按照需求扣减现有量,是无法实现的

                3. 使用spark(scala)递归炸开bom:--实验中

具体步骤如下

1.使用spark sql展开bom

在Scala中,我们可以使用Spark SQL来执行递归查询。要使用Spark SQL进行递归查询,我们首先需要创建一个递归查询视图,然后在该视图中执行我们的查询操作。接下来,我们将介绍一个具体的示例来解释如何使用Spark SQL进行递归查询。

假设我们有一个部门表,其中包含部门的ID和上级部门的ID。我们想要查询一个部门的所有上级部门直到根部门的层级关系。以下是一个简化的部门表结构和数据:

CREATE TABLE department (department_id INT,parent_department_id INT
);INSERT INTO department VALUES (1, NULL);
INSERT INTO department VALUES (2, 1);
INSERT INTO department VALUES (3, 2);
INSERT INTO department VALUES (4, 3);
INSERT INTO department VALUES (5, 3);
INSERT INTO department VALUES (6, NULL);
INSERT INTO department VALUES (7, 6);

我们可以使用Spark SQL来执行递归查询,查询部门ID为4的部门的所有上级部门:

import org.apache.spark.sql.SparkSessionval spark = SparkSession.builder().appName("Recursive Query").master("local").getOrCreate()val departmentDF = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/test").option("dbtable", "department").option("user", "root").option("password", "password").load()departmentDF.createOrReplaceTempView("department")spark.sql("""WITH RECURSIVE department_hierarchy AS (SELECT department_id, parent_department_idFROM departmentWHERE department_id = 4UNION ALLSELECT d.department_id, d.parent_department_idFROM department_hierarchy dhJOIN department d ON dh.parent_department_id = d.department_id)SELECT *FROM department_hierarchy
""").show()

上述示例中,我们使用Spark SQL的WITH RECURSIVE语法来定义一个递归查询视图department_hierarchy。起始查询使用了WHERE子句来找到部门ID为4的部门,然后使用UNION ALL子句将递归部分与起始部分联接起来,直到找到根部门为止。最后,我们通过SELECT语句从递归查询视图中选择所需的列。

运行以上代码,我们可以得到结果如下:

+-------------+-------------------+
|department_id|parent_department_id|
+-------------+-------------------+
|            4|                  3|
|            3|                  2|
|            2|                  1|
|            1|               NULL|
+-------------+-------------------+

总结

本文中,我们介绍了如何使用Scala中的Spark SQL来执行递归查询。我们首先了解了递归查询的概念和用法,然后通过一个具体的示例演示了如何使用Spark SQL进行递归查询。通过使用Spark SQL的WITH RECURSIVE语法,我们可以方便地处理复杂的递归查询操作,从而更好地利用Spark处理大规模结构化数据。

参考文档如下:

http://www.yayakq.cn/news/786027/

相关文章:

  • 免费行情网站大全合肥品牌设计
  • 产品开发流程ppt关键词优化公司排名
  • 如何搭建一个公司网站网站换域名了怎么办seo
  • 手机网站模板单页合肥关键词排名优化
  • 国内大中型网站建设知名公司有什么有用的网站
  • 网站 图文混编视频拍摄教学
  • 营销型网站建设与网盟微信公众平台是什么
  • 免费建站软件哪个最好网上书店网站建设方案策划
  • 沈阳微网站wordpress论坛功能
  • 玉树北京网站建设wordpress iis 分页 404
  • 广东平台网站建设制作保护环境网站模板
  • 建设通同类网站体育新闻最新消息世界杯
  • 网上书城网站开发的目的与意视频网站开发方法
  • 网络公司做网站的合同wordpress 挂黑链
  • 高校网站建设研究意义可以兼职做翻译的网站或app
  • 网站开发如何处理兼容性问题建购物的网站需要多少钱
  • 科技公司网站模板下载seo在线短视频发布页
  • 网站开发一般流程网站及其建设的心得体会
  • 找到做网站的公司平面设计师上的网站
  • 长沙 公司网站河南工程建设信息网官网
  • discuz 手机网站模板门户网站建设项目
  • 网站设计培训机构专题网站建设解决方案
  • 旅游网站开发意义和价值建网页的软件
  • 网站平台建设投资费用清单c2c代表网站有哪些
  • 个人网站建设方案策划商城网站设计价格
  • php网站开发面试题商汇通网站
  • 农业开发公司企业网站建设外语不精通可以做国外网站吗
  • 北京专业网站建设网站搜索引擎优化的技巧
  • 网站怎么做图片动态图非自己的网站如何做二次跳转
  • 广东seo网站设计价格国外炫网站