Concat - 图表函数

Concat() 用于组合字符串值。该函数用于返回通过每个维度计算的所有表达式值的聚合字符串串联。

Syntax:  

Concat({[SetExpression] [DISTINCT] [TOTAL [<fld{, fld}>]]} string[, delimiter[, sort_weight]])

Return data type: 字符串

Arguments:  

参数 说明
string

表达式或字段,其中包含要处理的字符串。

delimiter 每个值均由delimiter内的字符串分隔。
sort-weight

串联的顺序可由维度 sort-weight 的值决定,如果存在,与最低值对应的字符串首先出现在串联中.

SetExpression 聚合函数会默认聚合选择项定义的可能记录集合。可选记录集合可由集合分析表达式定义。
DISTINCT 如果在函数参数前出现单词 DISTINCT,则将忽略计算该函数参数生成的副本。
TOTAL

如果在函数参数前面出现单词 TOTAL,则计算给出当前选择项的所有可能值,而不只是属于当前维度值的那些值,即它会忽略图表维度。

通过使用 TOTAL [<fld {.fld}>](其中 TOTAL 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表),您可以创建总可能值的子集。

定义聚合范围

Examples and results:  

SalesGroup Amount Concat(Team) Concat(TOTAL <SalesGroup> Team)
East 25000 Alpha AlphaBetaDeltaGammaGamma
East 20000 BetaGammaGamma AlphaBetaDeltaGammaGamma
East 14000 Delta AlphaBetaDeltaGammaGamma
West 17000 Epsilon EpsilonEtaThetaZeta
West 14000 Eta EpsilonEtaThetaZeta
West 23000 Theta EpsilonEtaThetaZeta
West 19000 Zeta EpsilonEtaThetaZeta
示例 结果
Concat(Team)

此表格通过维度 SalesGroupAmount 以及度量 Concat(Team) 中的变体构造。在忽略“总计”结果的情况下,请注意,即使分布在两个 SalesGroup 值中的八个 Team 值都有数据,在表格中连接多个 Team 字符串值的度量 Concat(Team) 的唯一结果仍是包含维度 Amount 20000 的行,它提供了结果 BetaGammaGamma。这是因为在输入数据中 Amount 20000 有三个值。当度量分布在维度中时,所有其他结果均不串联,因为 SalesGroupAmount 的每个组合只有一个 Team 值。

Concat(DISTINCT Team,', ') Beta, Gamma。因为 DISTINCT 限定符意味着忽略重复的 Gamma 结果。此外,将分隔符参数定义为后跟空格的逗号。
Concat (TOTAL <SalesGroup> Team) 如果使用 TOTAL 限定符,则会串联所有 Team 值的所有字符串值。指定字段选择项 <SalesGroup> 时,此函数会将结果划分到维度 SalesGroup 的两个值中。对于 SalesGroupEast,结果为 AlphaBetaDeltaGammaGamma。对于 SalesGroupWest,结果为 EpsilonEtaThetaZeta
Concat (TOTAL <SalesGroup> Team,';', Amount) 通过为 sort-weight 添加参数 Amount,将按维度 Amount 的值对结果排序。结果变为 DeltaBetaGammaGammaAlphaEtaEpsilonZEtaTheta

示例中所使用的数据:

TeamData:

LOAD * inline [

SalesGroup|Team|Date|Amount

East|Gamma|01/05/2013|20000

East|Gamma|02/05/2013|20000

West|Zeta|01/06/2013|19000

East|Alpha|01/07/2013|25000

East|Delta|01/08/2013|14000

West|Epsilon|01/09/2013|17000

West|Eta|01/10/2013|14000

East|Beta|01/11/2013|20000

West|Theta|01/12/2013|23000

] (delimiter is '|');