【问题标题】:Power-Query/Power-Bi: How to change column types only if they exists?Power-Query/Power-Bi:仅当列类型存在时如何更改它们?
【发布时间】:2020-06-16 14:29:46
【问题描述】:

我将一个巨大的 excel 表加载到 power-query 中(使用 import .csv)。此导入会自动检测列类型并分别更改它们:

Table.TransformColumnTypes(#"Höher gestufte Header",{{"ID", Int64.Type}, {"Country", type text}, {"Customer", type text}, {"Release Name", type text}, {"Hardware Systems", type text}, {"Service By", type text}, {"Hwirelease Tags", type text}, {"Country Tags", type text}, {"Created", type datetime}, {"Last Change", type datetime}, {"Scope", type text}, {"PPM PID", Int64.Type}, {"Salesforce IDs", type text}})

问题:

当我知道将源更改为与旧日期不同的 .csv 时,问题就开始了,其中之前提到的某些列确实存在 nox(例如PPM PID)。 我收到一个错误,必须手动删除试图更改相应列的命令。

问题:

是否有一些简单的解决方法,以便 Power-Query 仅在列存在时尝试更改列类型?或者当列名随着时间的推移会改变它的名称时,我的完整方法是否不好?

【问题讨论】:

    标签: powerbi dax powerquery m


    【解决方案1】:

    一种方法可能是:

    1. 创建对结构(即列表或记录),其中每对代表一个列名及其对应的类型。包括所有可能的列(存在的和不存在的)。
    2. 过滤集合以仅保留表中存在的列,然后将过滤后的集合传递给Table.TransformColumnTypes

    举个例子:

    let
        #"Höher gestufte Header" = Table.FromColumns({
            {1, 6, 45, 67},
            {"US", "JA", "CA", "GB"}
        }, {"ID", "Country"}),
        typeTransformations = {{"ID", Int64.Type}, {"Country", type text}, {"Customer", type text}, {"Release Name", type text}, {"Hardware Systems", type text}, {"Service By", type text}, {"Hwirelease Tags", type text}, {"Country Tags", type text}, {"Created", type datetime}, {"Last Change", type datetime}, {"Scope", type text}, {"PPM PID", Int64.Type}, {"Salesforce IDs", type text}},
        changeTypes = Table.TransformColumnTypes(#"Höher gestufte Header", List.Select(typeTransformations, each Table.HasColumns(#"Höher gestufte Header", _{0})))
    in
        changeTypes
    

    【讨论】:

      【解决方案2】:

      你可以使用 try 否则:

          #"Change Type ID" = try Table.TransformColumnTypes(#"Höher gestufte Header",{{"ID", Int64.Type}}) otherwise #"Höher gestufte Header",
          #"Change Type Country" = try Table.TransformColumnTypes(#"Change Type ID",{{"Country", type text}}) otherwise #"Change Type ID",
          ...
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多