首页 > 解决方案 > 如何在 Kiba 中实现本地 DB + 外部 API 源

问题描述

我正在尝试在Rails 应用程序的上下文中在Kiba中实现以下 ETL 作业:

我的问题是:您将如何对本示例中的进行建模?

起点是本地数据库记录,但真正的数据来自对 API 的两次调用(1/ 搜索返回的记录和 2/ 完整标签列表)。

谢谢!

标签: kiba-etl

解决方案


您可以通过这种方式对其进行建模:假设您在某个变量(例如people_ids)中获得了数据库记录的 id 列表,您可以将其作为第一次迭代:

Kiba.parse do
  source Kiba::Common::Sources::Enumerable, -> { people_ids }

  transform do |person_id|
    Enumerator.new do |y|
      # here some HTTP query for search, retrieval of tags etc, and 
      # you would yield each result in a loop
      y << {person_id: person_id, tags: [...] }
    end
  end

  transform Kiba::Common::Transforms::EnumerableExploder
  # SNIP
end      

至于标签,如果它们已经在您的数据库中并且数量很少,您可以尽早加载它们以构建某种形式的查找表:

tags = {}
Kiba.parse do
  pre_process do
    # here preload the tags & data required to decide on your business logic
  end
  # SNIP
end

这样,您可以稍后在管道中将每个传入标签与数据库中的正确标签 ID 相关联,并简单地用于ActiveRecord插入关系。

或者,如果您想要一个已构建的快速插入/更新插入解决方案,并获得我们的供应商支持,您也可以利用Kiba Pro,因此也支持开源版本的开发!

希望这能正确回答您的问题,否则请随时发表评论!


推荐阅读