【问题标题】:Data Studio CASE error - THEN/ELSE arguments have incompatible types: TEXT/ NUMBERData Studio CASE 错误 - THEN/ELSE 参数的类型不兼容:TEXT/NUMBER
【发布时间】:2020-09-19 10:40:02
【问题描述】:

我正在尝试将我的表维度名称从 1 更改为“Android”,但我收到此错误消息:无效的公式 - THEN/ELSE 参数的类型不兼容:TEXT/NUMBER。所有 THEN/ELSE 参数必须返回相同的类型。

我的案例陈述如下:

案例 当 app_id = 1 那么'android' ELSE app_id END

【问题讨论】:

  • 错误信息的哪一部分你看不懂?
  • 完全理解消息,只是不知道如何将整数更改为字符串。谢谢。

标签: sql google-data-studio


【解决方案1】:

下面分为两部分,首先显示可能的问题,然后是建议Calculated Fields

1) 问题

1.1) 不兼容的类型:TEXT/NUMBER

android 是一个文本 值而app_id 是一个数字 类型字段时,会出现以下情况:

CASE
  WHEN app_id = 1 THEN 'android'
  ELSE app_id 
END

无效的公式 - THEN/ELSE 参数的类型不兼容:TEXT/NUMBER。所有 THEN/ELSE 参数必须返回相同的类型。

1.2) THEN/ELSE 中没有函数

此问题是由于在CASE 语句的THEN/ELSE 部分中使用了函数或数学运算

CASE
  WHEN app_id = 1 THEN 'android'
  ELSE CAST(app_id AS STRING )
END

THEN/ELSE 语句不能包含函数或数学运算。

2) 建议

下面的Calculated Fields 中的任何一个都可以解决问题:

2.1) 正则表达式

下面的Calculated Field 适用于TextNumber 字段:

REGEXP_REPLACE(CAST(app_id AS TEXT),"^(1)$","android")

2.2) 类型:文本

在数据源中,将 app_id 字段更改为 Text 字段(如果需要,请复制该字段以维护数字和文本字段)并使用 CASE 语句:

CASE
  WHEN app_id = "1" THEN 'android'
  ELSE app_id
END

Google Data Studio Report 和一个 GIF 来详细说明:

【讨论】:

    【解决方案2】:

    正如错误消息所说,整数和字符串不兼容。您需要将整数转换为字符串:

    (CASE WHEN app_id = 1 THEN 'android' ELSE CAST(app_id as string) END)
    

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 2015-08-28
      • 2021-12-18
      • 2021-02-21
      • 1970-01-01
      相关资源
      最近更新 更多