【问题标题】:Power Query Formula Language - Detect type of columnsPower Query 公式语言 - 检测列的类型
【发布时间】:2016-02-24 13:59:03
【问题描述】:

在 Power BI 中,我有一些从导入的数据生成的查询表。所有数据都以“任何”类型出现,我正在尝试自动检测每列中数据的类型。

某些查询会根据传入的数据生成带有列的表 - 在查询运行并设置表(数据来自 Azure blob)之前,我不知道这些列将是什么。由于我将有很多表要维护,哪些列可以随着任何数据刷新而更改(可能会添加新列),因此每次都遍历所有表并在列上按“检测数据类型”是无法管理的。

所以我试图弄清楚如何在查询公式语言中执行“检测数据类型”以附加到生成表列的查询的末尾。我尝试获取列中的第一个条目并执行 Value.Type(column{0}),但是对于其中包含整数的列,这似乎是“文本”。但是,按“检测数据类型”确实可以将类型正确识别为“整数”。

有人知道如何检测列的条目类型吗?

附:我不太担心一列可能包含不同数据类型的值

【问题讨论】:

    标签: powerbi powerquery


    【解决方案1】:

    您似乎在这里遇到了多个问题。而且您的解决方案将是脆弱的,有更好的方法。但是让我们首先处理列类型检测。 Power Query 在转到数据类型时使用“任何”数据类型。您可以编写一个函数,对表中列的行进行采样,执行最佳匹配数据类型检测,然后显式设置列的数据类型。这可能是混乱和棘手的,因为您需要每列执行一次。这对于固定模式可能是可行的,但对于动态模式,您会很快遇到一些事情。首先,您需要编写一些疯狂的 PQ 代码来列出所有列并在每个列上运行您的函数。这将在第一次工作,但可能会在后续刷新中中断,因为刷新期间不允许更改数据模型。如果你使用的是 Power BI Desktop 之类的工具,你将能够解决问题。如果将报表发布到 Power BI 服务,只会看到刷新错误。

    动态架构会遇到我上面提到的相同的数据模型更改问题。

    您不会遇到问题的替代解决方案是使用 Direct Query 数据源,而不是使用 Power Query。如果您将数据加载到 Azure SQL 或表格模型中,报告层将自动获取更新的字段,因此您不必尝试使用 PQ。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2021-11-29
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多