Tableau api 如何使用Tableau将字符串中每个单词的第一个字符大写?

Tableau api 如何使用Tableau将字符串中每个单词的第一个字符大写?,tableau-api,Tableau Api,我有一个名为“ENTIDAD_Federativa”的列,它以大写形式包含墨西哥各州的名称,如下所示: 我要做的是将该列中每个字符串的每个字符(第一个字符除外)从上到下传递,因此,该列应如下所示: 我一直在尝试这样做UPPER(左([ENTIDAD\u FEDERATIVA],1))+MID([ENTIDAD\u FEDERATIVA],2),但我遇到了以下错误:语法错误操作数丢失。如果有人有更好的主意,我将非常感谢你的帮助。提前感谢。不幸的是,Tableau中没有用于此的函数(类似于exc

我有一个名为“ENTIDAD_Federativa”的列,它以大写形式包含墨西哥各州的名称,如下所示:

我要做的是将该列中每个字符串的每个字符(第一个字符除外)从上到下传递,因此,该列应如下所示:


我一直在尝试这样做
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