impala 中常见字母的记录高效分类
Efficient Classification of records by common letters in impala
我在 impala (TBL1
) 中有一个 table,其中包含具有不同首字母数量的不同名称。 table 包含大约 3M 条记录。我想向 table 添加一个新属性,其中每个常见的首字母都有一个 class。它与 DENSE_RANK
的工作方式相同,但首字母的数量是动态的。首字母相同的个数不能少于p=3
个字母(p
=参数)
这是 table 和所需结果的示例:
| 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 |
...
这是你想要的吗?
select t.*,
dense_rank() over (order by strleft(attr1, 3)) as newcol
from . . .;
“3”是您的参数。
请注意:在您的示例中,您似乎已按相反的字母顺序分配了新值。因此,您需要 desc
作为 order by
.
我在 impala (TBL1
) 中有一个 table,其中包含具有不同首字母数量的不同名称。 table 包含大约 3M 条记录。我想向 table 添加一个新属性,其中每个常见的首字母都有一个 class。它与 DENSE_RANK
的工作方式相同,但首字母的数量是动态的。首字母相同的个数不能少于p=3
个字母(p
=参数)
这是 table 和所需结果的示例:
| 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 |
...
这是你想要的吗?
select t.*,
dense_rank() over (order by strleft(attr1, 3)) as newcol
from . . .;
“3”是您的参数。
请注意:在您的示例中,您似乎已按相反的字母顺序分配了新值。因此,您需要 desc
作为 order by
.