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

如何基于第一个Power Query的shipment_nbr结果运行第二个查询?

可以基于第一个查询的shipment_nbr结果运行第二个查询

当然可以实现这个需求,具体步骤和代码示例如下:

步骤1:加载第一个SQL查询的结果

先执行第一个查询,提取并格式化所需的shipment_nbr列表:

// 第一个查询:获取并格式化shipment_nbr列表
let
    Source = Sql.Database(
        "database.net", "proddb", 
        [
            Query = "SELECT detail.case_date, detail.case_id, detail.shipment_nbr "
                  & "FROM view_db.case_detail detail"
        ]
    ),
    // 提取所有shipment_nbr并去重(可选,减少重复查询)
    ShipmentNumbers = List.Distinct(Source[shipment_nbr]),
    // 转换为SQL IN子句支持的格式:单引号包裹+逗号分隔
    FormattedShipmentList = "'" & Text.Combine(ShipmentNumbers, "','") & "'"
in
    FormattedShipmentList

步骤2:基于格式化后的列表运行第二个Teradata查询

将第一个查询生成的FormattedShipmentList作为参数传入第二个查询的WHERE IN条件:

// 第二个查询:使用第一个查询的结果过滤数据
let
    // 调用第一个查询生成的格式化字符串(替换成你第一个查询的实际名称)
    ShipmentList = 第一个查询的名称,
    Source = Teradata.Database(
        "edw.prod.com", 
        [
            Query = "SELECT shipment_nbr, invoice "
                    & "FROM PROD_DB.billed "
                    & "WHERE billed.shipment_nbr IN (" & ShipmentList & ")"
        ]
    )
in
    Source

注意事项

  • 如果shipment_nbr是数值类型,无需添加单引号,改用Text.Combine(List.Transform(ShipmentNumbers, Text.From), ",")生成格式字符串
  • 若第一个查询返回的shipment_nbr数量极大,可能触发SQL语句长度限制,此时建议用合并查询替代:
    1. 分别加载两个查询的完整数据集
    2. 在Power Query编辑器中选择第一个查询,点击「合并查询」,以shipment_nbr为关联键关联第二个查询
    3. 展开合并后的列,提取所需的invoice字段

内容的提问来源于stack exchange,提问作者Stephen Peck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:01:40