将时间格式列划分为hive中指定数量的离散间隔



我有一个列名称ViolationTime在我的Hive表。时间格式为24小时HHmm,例如1424。该表包含1000万行。我想把它分成6个独立的组来执行操作。

我尝试使用ntile,但它会根据升序或降序划分值。我想把这一列分成离散的间隔。

在Hive 3.0及更新版本中,width_bucket()函数会这样做:

返回类型:INT
名称(签名):width_bucket(NUMERIC expr),NUMERIC min_value, NUMERIC max_value, INT num_buckets)
Description:通过映射返回一个介于0和num_buckets+1之间的整数将其放入第i个大小相等的桶中。桶是通过分割做成的[min_value, max_value]划分为大小相等的区域。如果expr <Min_value返回1,如果expr>Max_value return num_buckets+1.

虽然你可能会发现你需要首先将HHmm时间值转换为int(例如,从午夜开始的秒数),以使其工作得很好。