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

如何从Oracle数据库直接筛选指定列而非后续删除?

从Oracle数据库直接筛选指定列优化性能

你的问题出在先加载全表所有列再删除不需要的列,这会导致数据库返回大量不必要的数据,拖慢整体速度。正确的做法是让数据库直接只返回你需要的列,减少数据传输量。

方法一:直接用SQL查询指定列(最可靠高效)

通过Oracle.Database的Query参数直接执行SQL语句,让数据库端完成列筛选,只返回需要的数据:

let
    Source = Oracle.Database("orcl", [
        HierarchicalNavigation=true,
        Query="SELECT 列名1, 列名2, 列名3 FROM NOVA_SHF.GL_VCHRDETAIL"
    ]),
    // 可选:根据实际需求设置列数据类型
    #"设置列类型" = Table.TransformColumnTypes(Source, {
        {"列名1", type text},
        {"列名2", type number},
        {"列名3", type date}
    })
in
    #"设置列类型"

把上面的列名1, 列名2替换成你实际需要保留的列即可,也就是原代码中没被删除的那些列。

方法二:使用Table.SelectColumns触发查询折叠

如果不想写SQL,可以用Table.SelectColumns替代Table.RemoveColumns,Power Query通常会将这个操作折叠到数据库端执行(即让数据库只返回指定列):

let
    Source = Oracle.Database("orcl", [HierarchicalNavigation=true]),
    NOVA_SHF = Source{[Schema="NOVA_SHF"]}[Data],
    GL_VCHRDETAIL1 = NOVA_SHF{[Name="GL_VCHRDETAIL"]}[Data],
    #"筛选指定列" = Table.SelectColumns(GL_VCHRDETAIL1, {"需要的列名1", "需要的列名2"})
in
    #"筛选指定列"

这种方法的前提是Power Query能识别并折叠这个操作,相比直接写SQL,可靠性稍弱,但更符合Power Query的可视化操作逻辑。

内容的提问来源于stack exchange,提问作者mohsin naseem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:50:39