我有一个PCollection,它由一个ID列和七个值列组成。每个ID有几行。
我想计算每个唯一ID的七个列的平均值。
是否有一种方法可以实现这一目标,而无需以编程方式遍历每个元素并为每个元素创建键/值对?
答案 0 :(得分:0)
table_pcoll = ....
def per_column_average(rows, ignore_elms=[ID_INDEX]):
return [sum([row[idx] if idx not in ignore_elms else 0
for row in rows])/len(row[0])
for idx, _ in enumerate(rows[0])]
keyed_averaged_elm = (table_pcoll
| beam.Map(lambda x: (x[ID_INDEX], x))
| beam.GroupByKey()
| beam.Map(lambda x: (x[0], per_column_average(rows))
对不起,令人讨厌的单线飞机。希望对您有所帮助。