通过impala中的常用字母对记录进行有效分类
Posted
技术标签:
【中文标题】通过impala中的常用字母对记录进行有效分类【英文标题】:Efficient Classification of records by common letters in impala 【发布时间】:2017-02-25 19:44:26 【问题描述】:我在 impala (TBL1
) 中有一个表,其中包含不同的名称和不同数量的第一个常用字母。该表包含大约 3M 条记录。我想在表中添加一个新属性,其中每个常见的第一个字母都有一个类。它与DENSE_RANK
的工作方式相同,但首字母的数量是动态的。相同首字母的个数不得少于p=3
字母(p
= 参数)。
以下是表格示例和所需结果:
| ID | Attr1 | New_Attr1 | Some more attribute...
+-------+--------------+-------------+-----------------------
| 1 | ZXA-12 | 1 |
| 2 | YL3300 | 2 |
| 3 | ZXA-123 | 1 |
| 4 | YL3400 | 2 |
| 5 | YL3-aaa | 2 |
| 6 | TSA 789 | 3 |
...
【问题讨论】:
【参考方案1】:这是你想要的吗?
select t.*,
dense_rank() over (order by strleft(attr1, 3)) as newcol
from . . .;
“3”是你的参数。
请注意:在您的示例中,您似乎已按字母倒序分配了新值。因此,您会希望 desc
用于 order by
。
【讨论】:
非常感谢!我想保持桌子的顺序。会因为order by而改变吗? 字母顺序只是一个例子,不能是真实大小写。 @Avi 。 . .将order by id
添加到查询中。以上是关于通过impala中的常用字母对记录进行有效分类的主要内容,如果未能解决你的问题,请参考以下文章