189 8069 5689

【SQL】sparksql不等值join-创新互联

products一个商品价格变化的表,orders商品订单,记录每次购买商品和日期
基于Spark SQL中的不等值join实现orders和products的匹配,统计每个订单中商品对应当时的价格

在双滦等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站制作 网站设计制作按需开发网站,公司网站建设,企业网站建设,成都品牌网站建设,全网整合营销推广,成都外贸网站建设公司,双滦网站建设费用合理。

缓慢变化的商品价格表
旺仔牛奶,发生过一次价格变更

scala> val products = sc.parallelize(Array(
     |   ("旺仔牛奶", "2017-01-01", "2018-01-01", 4),
     |   ("旺仔牛奶", "2018-01-02", "2020-01-01", 5),
     |   ("王老吉", "2017-01-02", "2019-01-01", 5),
     |   ("卫龙辣条", "2010-01-01", "2020-01-01", 2)
     | )).toDF("name", "startDate", "endDate", "price")
products: org.apache.spark.sql.DataFrame = [name: string, startDate: string ... 2 more fields]

scala> products.show();
+----+----------+----------+-----+
|name| startDate|   endDate|price|
+----+----------+----------+-----+
|旺仔牛奶|2017-01-01|2018-01-01|    4|
|旺仔牛奶|2018-01-02|2020-01-01|    5|
|   王老吉|2017-01-02|2019-01-01|    5|
|卫龙辣条|2010-01-01|2020-01-01|    2|
+----+----------+----------+-----+

订单表(商品名称,订单日期)
旺仔牛奶在不同价格时段分别发生了一次订单

scala> val orders = sc.parallelize(Array(
     |   ("2017-06-01", "旺仔牛奶"),
     |   ("2017-07-01", "王老吉"),
     |   ("2018-03-01", "旺仔牛奶")
     | )).toDF("date", "product")
orders: org.apache.spark.sql.DataFrame = [date: string, product: string]

scala> orders.show
+----------+-------+
|      date|product|
+----------+-------+
|2017-06-01|旺仔牛奶|
|2017-07-01|    王老吉|
|2018-03-01|旺仔牛奶|
+----------+-------+

通过不等值连接,计算每个订单当时的商品价格
查看出旺仔牛奶,两个订单在不同时间段上对应的价格

scala> orders.join(products, $"product" === $"name" && $"date" >= $"startDate" && $"date" <= $"endDate").show()
+-----------+------------+----------+------------+-------------+-----+
|     date      |  product   |    name  |   startDate |   endDate   | price|
+-----------+------------+----------+------------+-------------+-----+
|2017-07-01|    王老吉  | 王老吉   |2017-01-02|2019-01-01 |    5  |
|2017-06-01|  旺仔牛奶 |旺仔牛奶|2017-01-01|2018-01-01 |    4  |
|2018-03-01|  旺仔牛奶 |旺仔牛奶|2018-01-02|2020-01-01 |    5  |
+-----------+------------+----------+------------+-------------+-----+

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:【SQL】sparksql不等值join-创新互联
文章链接:http://cdxtjz.cn/article/dhccpg.html

其他资讯