You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何一次性获取多个OpCo_code?Spark SQL查询仅返回单结果求助

解决Spark SQL获取全部OpCo_code的问题

问题根源

你当前代码里的.collect()[0][0]直接取了查询结果的第一行第一列,所以只能拿到单个匹配值,自然看不到其他的OPCOCode。

修改方案

把代码改成提取所有行的OPCOCode,存入列表:

# 执行查询获取全部匹配结果
opco_rows = spark.sql(f""" 
  SELECT
    OPCOCode 
  FROM
    delta.`/{SALES_ORG_REFERENCE_OBJECT}` 
  WHERE
    ForecastUnitCode = "{SalesOrg_row['ProductKeyCode']}" 
    AND SalesOrganisationCode = "{SalesOrg_row['SalesOrganisationCode']}" 
    AND RegionID = "{SalesOrg_row['RegionID']}" 
""").collect()

# 从每行中提取OPCOCode,生成完整列表
OpCo_codes = [row['OPCOCode'] for row in opco_rows]

# 打印所有结果
print(OpCo_codes)

执行后会输出所有匹配的OPCOCode,比如['HP', 'IC', 'FD', 'UF']。

可选优化

如果你的数据量很大,collect()会把所有数据拉到Driver节点,可能导致内存不足。如果只需要去重后的OPCOCode,可以在SQL中添加DISTINCT关键字减少返回数据量:

SELECT DISTINCT OPCOCode 
FROM delta.`/{SALES_ORG_REFERENCE_OBJECT}` 
WHERE
  ForecastUnitCode = "{SalesOrg_row['ProductKeyCode']}" 
  AND SalesOrganisationCode = "{SalesOrg_row['SalesOrganisationCode']}" 
  AND RegionID = "{SalesOrg_row['RegionID']}"

内容的提问来源于stack exchange,提问作者KIRAN KUMAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:40:34