如何在Hive中进行按行计数

时间:2018-07-29 06:52:22

标签: hiveql

h1      h2      h3      h4      h5      h6      h7      h8
U       U       NULL    U       Y       NULL    Y       X
U       NULL    U       U       Y       Y       X       X
U       U       U       NULL    U       NULL    Y       NULL
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL
X       V       U       U       Y       NULL    Z       X
Y       X       NULL    X       Y       Z       U
X       NULL    U       NULL    NULL    U       Z       Y
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL

以上数据集有8列h1,h2,h3 ... h8。如果所有的所有列均为NULL,则计数为0。如果至少一列具有值,则计数为1。 例如第一行的计数为6(不考虑空值)。

这里X =男孩,v =女孩,u =妻子,z =丈夫,y =头。因此,我们如何才能针对每一行明智地按类型(例如男孩,妻子或头等)找到计数。例如有多少个妻子,多少个丈夫或几个女孩?

应该喜欢输出

X(男孩)= 8 U(WIFE)= 15 ETC ....

从上面的数据集中读取...必须按类型计算当前的总人数。

2 个答案:

答案 0 :(得分:1)

连接字符串,除去“ U”(对于妻子)以外的所有内容,计算长度,然后将它们加总。请查看代码中的注释:

<input [hidden]="!(mapApi == 'baidu')" name="username" id="suggestId" placeholder="" force-selection="true" autocorrect="off" autocapitalize="off" spellcheck="off"
        type="text" class="form-control" [formControl]="control" pInputText>

答案 1 :(得分:0)

我认为您可以使用concat_ws来连接所有列,具有多个null值的concat_ws将返回一个空字符串。这样,您就可以使用length函数获取每一行的总列的长度(在您的示例中,每个单元格只有一个特征),这将返回每一行中非空列的计数。

SELECT LENGTH(CONCAT_WS('',h1,h2,h3,h4,h5,h6,h7,h8)) as h9 from your_table;