des*_*itb 2 pyspark pyspark-sql
客户 - 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;
Run Code Online (Sandbox Code Playgroud)
我想在不获取 3 个表作为 pyspark 中的单个数据帧并对数据帧执行连接的情况下执行上述查询。
您可以使用查询代替表,如下所述
df = spark.read.jdbc(
"url", "(query) as table",
properties={"user":"username", "password":"password"})
Run Code Online (Sandbox Code Playgroud)
在您的情况下,它将是:
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"})
Run Code Online (Sandbox Code Playgroud)
这个答案使用了这种类型的查询来代替表。这个问题也与你的情况有关
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |