Tableau api 如何使用Tableau将字符串中每个单词的第一个字符大写?
我有一个名为“ENTIDAD_Federativa”的列,它以大写形式包含墨西哥各州的名称,如下所示: 我要做的是将该列中每个字符串的每个字符(第一个字符除外)从上到下传递,因此,该列应如下所示:Tableau api 如何使用Tableau将字符串中每个单词的第一个字符大写?,tableau-api,Tableau Api,我有一个名为“ENTIDAD_Federativa”的列,它以大写形式包含墨西哥各州的名称,如下所示: 我要做的是将该列中每个字符串的每个字符(第一个字符除外)从上到下传递,因此,该列应如下所示: 我一直在尝试这样做UPPER(左([ENTIDAD\u FEDERATIVA],1))+MID([ENTIDAD\u FEDERATIVA],2),但我遇到了以下错误:语法错误操作数丢失。如果有人有更好的主意,我将非常感谢你的帮助。提前感谢。不幸的是,Tableau中没有用于此的函数(类似于exc
我一直在尝试这样做
UPPER(左([ENTIDAD\u FEDERATIVA],1))+MID([ENTIDAD\u FEDERATIVA],2)
,但我遇到了以下错误:语法错误操作数丢失。如果有人有更好的主意,我将非常感谢你的帮助。提前感谢。不幸的是,Tableau中没有用于此的函数(类似于excel中的=property()
),但是我们可以解决此问题
示例数据:
如果每个字符串中只有一个单词(one word only
),我们可以使用:
UPPER(LEFT([ENTIDAD_FEDERATIVA],1)) + LOWER(MID([ENTIDAD_FEDERATIVA], 2, LEN([ENTIDAD_FEDERATIVA]) -1))
但是由于我们有更多的单词,我们需要拆分字符串并对每个单词执行上述逻辑
我们从单词最多的字符串开始
第三个单词将具有以下公式(拆分字符串并取第三个匹配项拆分([ENTIDAD\u FEDERATIVA],“”,3)
:
在任何地方,当没有找到第三个单词时,它将返回一个“Null
”值。
因此,我们将公式包装在IFNULL(,)
其中
将是所有单词(第一个单词+第二个单词+第三个单词),因为我们要返回完整的字符串。对于
aka“Null
”值,我们也会这样做,但现在我们选择第二个单词
第二个单词
公式(我们更改应在split函数中返回的单词,split([ENTIDAD\u FEDERATIVA],“”,2)
:
有了这个逻辑,我们可以将其扩展到7或10个单词,或者一个“单元”中可能有多少个单词
对于三个单词,完整的计算字段(Calculation4
)如下所示:
// Third word:
IFNULL(
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",1),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",1), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",1)) -1))
+ " " +
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",2),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",2), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",2)) -1))
+ " " +
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",3),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",3), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",3)) -1)),
// Second word:
IFNULL(
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",1),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",1), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",1)) -1))
+ " " +
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",2),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",2), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",2)) -1)),
// First word:
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",1),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",1), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",1)) -1))))
如果您的字符串中最多有1个空格,这将起作用
[column_name]周围的空格使双击以您的列名替换更加容易
IF CONTAINS( [column_name] , " ")
THEN
UPPER( LEFT( [column_name] , 1) )
+ LOWER( LEFT(
RIGHT( [column_name]
, LEN( [column_name] ) - 1
)
,FIND( [column_name] ," ") - 2
)
)
+ " "
+ UPPER(
LEFT(
RIGHT( [column_name]
, LEN( [column_name] )
- FIND( [column_name] ," ")
)
, 1
)
)
+ LOWER(
RIGHT( [column_name]
, LEN( [column_name] )
- FIND( [column_name] ," ") - 1
)
)
ELSE
UPPER( LEFT( [column_name] , 1) )
+ LOWER( RIGHT( [column_name]
, LEN( [column_name] ) - 1
)
)
END
UPPER(LEFT([ENTIDAD\u FEDERATIVA],1))+MID([ENTIDAD\u FEDERATIVA],2)
对我很有用。但是,此函数只将第一个字母改为大写,因为您的所有单词都已大写,所以不会有任何可见的更改。
// Third word:
IFNULL(
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",1),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",1), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",1)) -1))
+ " " +
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",2),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",2), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",2)) -1))
+ " " +
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",3),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",3), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",3)) -1)),
// Second word:
IFNULL(
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",1),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",1), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",1)) -1))
+ " " +
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",2),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",2), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",2)) -1)),
// First word:
UPPER(LEFT(SPLIT([ENTIDAD_FEDERATIVA], " ",1),1)) + LOWER(MID(SPLIT([ENTIDAD_FEDERATIVA], " ",1), 2, LEN(SPLIT([ENTIDAD_FEDERATIVA], " ",1)) -1))))
IF CONTAINS( [column_name] , " ")
THEN
UPPER( LEFT( [column_name] , 1) )
+ LOWER( LEFT(
RIGHT( [column_name]
, LEN( [column_name] ) - 1
)
,FIND( [column_name] ," ") - 2
)
)
+ " "
+ UPPER(
LEFT(
RIGHT( [column_name]
, LEN( [column_name] )
- FIND( [column_name] ," ")
)
, 1
)
)
+ LOWER(
RIGHT( [column_name]
, LEN( [column_name] )
- FIND( [column_name] ," ") - 1
)
)
ELSE
UPPER( LEFT( [column_name] , 1) )
+ LOWER( RIGHT( [column_name]
, LEN( [column_name] ) - 1
)
)
END