我正忙于处理 ETL 管道,但对于这个特殊问题,我需要获取一个数据表,并将每一列转换为一个集合 - 即一个唯一的数组。
我正在努力思考如何在 Kiba 框架内完成此任务。
这是我要实现的目标的本质:
来源:
[
{ dairy: "Milk", protein: "Steak", carb: "Potatoes" },
{ dairy: "Milk", protein: "Eggs", carb: "Potatoes" },
{ dairy: "Cheese", protein: "Steak", carb: "Potatoes" },
{ dairy: "Cream", protein: "Chicken", carb: "Potatoes" },
{ dairy: "Milk", protein: "Chicken", carb: "Pasta" },
]
目的地
{
dairy: ["Milk", "Cheese", "Cream"],
protein: ["Steak", "Eggs", "Chicken"],
carb: ["Potatoes", "Pasta"],
}
像这样的事情a)在Kiba可行,b)甚至建议在Kiba做吗?
任何帮助将不胜感激。
更新 - 部分解决。
我找到了部分解决方案。这个转换器类会将行表转换为集合的散列,但我不知道如何使用 ETL 目标获取该数据。我怀疑我正在以一种不打算使用的方式使用 Kiba。
class ColumnSetTransformer
def initialize
@col_set = Hash.new(Set.new)
end
def process(row)
row.each do |col, col_val|
@col_set[col] = @col_set[col] + [col_val]
end
@col_set
end
end