如何在 Redshift 的结果中保留列别名中的大写和小写字母
Posted
技术标签:
【中文标题】如何在 Redshift 的结果中保留列别名中的大写和小写字母【英文标题】:How to keep the upper case and lower case letters in a column alias in the results in Redshift 【发布时间】:2019-02-21 03:16:37 【问题描述】:在 Redshift 中,当我们将结果导入 TABLEAU 时,我们试图为从查询返回的列提供更有意义的别名,问题是 RedShift 将所有字母转换为小写字母,即来自“事件日期” 然后它返回“事件日期”,关于如何解决这个问题以保持别名的任何想法?
【问题讨论】:
这可能是您使用的 SQL 客户端引起的。您可以尝试使用其他客户端或使用psql
来查看它以原始形式返回吗?
如果您能够手动重命名,您可以在 Tableau 本身中重命名吗?
其中一种解决方案是使用jsonpath,详情见here
【参考方案1】:
不,您不能在 Redshift 中执行此操作。所有列都是小写的。
您只能通过使用强制大写
set describe_field_name_in_uppercase to on;
另请参阅此处https://docs.aws.amazon.com/redshift/latest/dg/r_names.html 的示例,您可以看到大写字符以小写形式返回。它说“标识符不区分大小写,并在数据库中折叠为小写”
您当然可以重命名列以在 Tableau 中包含大写。
【讨论】:
【参考方案2】:我正在浏览 AWS 文档以了解 redshift,并且看起来 INTCAP 函数可以解决您的用例
供参考 => https://docs.aws.amazon.com/redshift/latest/dg/r_INITCAP.html
简要说明(复制)
INITCAP 函数将字符串中每个单词的首字母变为大写,而任何后续字母变为(或左)小写。因此,了解哪些字符(除了空格字符)用作单词分隔符非常重要。单词分隔符是任何非字母数字字符,包括标点符号、符号和控制字符。以下所有字符都是单词分隔符:
! " # $ % & ' ( ) * + , - . / : ; ?@ [ \ ] ^ _ ` | ~
在您的情况下,您已将字段名称声明为 event_date,它将转换为 Event_Date。
接下来你可以使用REPLACE函数来替换下划线'_'
供参考 => https://docs.aws.amazon.com/redshift/latest/dg/r_REPLACE.html
【讨论】:
谢谢@Bhavesh,这对于列的结果确实很有用,问题是我需要列的标题有大写字母,对此有什么想法吗?【参考方案3】:你需要放
set describe_field_name_in_uppercase to on;
在 Tableau 的初始 SQL 中。
【讨论】:
这实际上不起作用,它将列名设置为仅大写,因此在 OP 的示例中:"EVENT DATE"
以上是关于如何在 Redshift 的结果中保留列别名中的大写和小写字母的主要内容,如果未能解决你的问题,请参考以下文章