如何基于第一个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语句长度限制,此时建议用合并查询替代:- 分别加载两个查询的完整数据集
- 在Power Query编辑器中选择第一个查询,点击「合并查询」,以
shipment_nbr为关联键关联第二个查询 - 展开合并后的列,提取所需的
invoice字段
内容的提问来源于stack exchange,提问作者Stephen Peck
相关产品推荐
相关产品推荐

