gpt4 book ai didi

pyspark - 我们如何使用 jdbc 执行联接查询,而不是使用 pyspark 获取多个表

转载 作者:行者123 更新时间:2023-12-02 16:03:37 25 4
gpt4 key购买 nike

客户 - c_id、c_name、c_address产品 - p_id、p_name、价格供应商 - s_id、s_name、s_address订单 - o_id、c_id、p_id、数量、时间

SELECT o.o_id,
c.c_id,
c.c_name,
p.p_id,
p.p_name,
p.price * o.quantity AS amount
FROM customer c
JOIN orders o ON o.c_id = c.c_id
JOIN product p ON p.p_id = o.p_id;

我想执行上述查询,而不需要在 pyspark 中获取 3 个表作为单独的数据帧并对数据帧执行联接。

最佳答案

您可以使用查询代替表,如下所述

引用PySpark Documentation

df = spark.read.jdbc(
"url", "(query) as table",
properties={"user":"username", "password":"password"})

在您的情况下,它将是:

df = spark.read.jdbc("url", """
(
SELECT o.o_id,
c.c_id,
c.c_name,
p.p_id,
p.p_name,
p.price * o.quantity AS amount
FROM customer c
JOIN orders o ON o.c_id = c.c_id
JOIN product p ON p.p_id = o.p_id
) as table""", properties={"user":"username", "password":"password"})

这个answer使用这种类型的查询来代替表。还有这个question与您的情况相关

关于pyspark - 我们如何使用 jdbc 执行联接查询,而不是使用 pyspark 获取多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49130381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com