1

我有大约 400 万行数据要导入 Keen.io。非规范化的 CSV 结构看起来像这里所附的......“维度”列是一个字符串化的 JSON 对象。我看到 Keen.io 有一个用于 CSV 的批量导入器。进口商如何处理“尺寸”栏?它会把它变成一个物体吗?你对我应该如何处理这个问题有什么建议?谢谢!

4

1 回答 1

1

首先让我们以事件数据的形式构建您的数据,然后准备将其加载到 Keen。

您共享的链接看起来像您有一个关于鱼的数据表(每条鱼一行)和另一个关于法规的数据表。我假设如果您只是想将这些表存储在某个地方,您会使用 SQL 数据库或类似 Firebase 的东西。由于您有兴趣将它们加载到 Keen IO 中,我假设您有一些与您有兴趣分析的数据相关的操作,这就是您所说的 400 万行数据。

加载数据的第一步是确定与您有兴趣记录的这些事件相关的操作

对于此示例,假设您在每次查看或保存鱼或法规时进行跟踪。我们的事件集合将是:

  • 查看鱼
  • 救鱼
  • 查看法规
  • 节省监管

每次发生其中一个事件时,我们都会以这样的格式将其发布到 Keen 中。我们基本上创建了一个对象,其中包含关于鱼、规则、用户等的各种相关属性:

// Create an event data object with the properties you want to send
// This is an example of sending an event using the Keen IO JavaScript SDK, but you could post the event from iOS, Android, or from the backend.
// This example is an event that happens when someone views details about a fish

var event = {
  gid: "be68ea99-8f3b-9s9f",
  fish: { // details about the fish
    id: "168",
    species_name: "Amberjack, Lesser"
  },
  user: { // details about the user
    id: "029aomsldsf9aadfm"
  },
  app_type: "web", // "iOS", "Android"
  keen: {  // time the event happened
    timestamp: new Date().toISOString()
  }
};

// Send it to the "view_fish" collection
client.addEvent("view_fish", event);

理想情况下,您的应用程序经过检测,以便这些事件在发生时发布到 Keen IO。

听起来在这种情况下,您还需要加载一些历史数据。查看Keen IO 批量加载指南。为此,您需要为每个历史事件创建 CSV。第一行必须是列名。之后,每个事件都有一行:

keen.timestamp, gid, fish.id, fish.species_name
2017-06-13T19:11:05Z, ae68ea99-2f3b-9s9z, "168", "Amberjack, Lesser"
2017-05-13T19:11:05Z, be88ea99-8f4b-3s9x, "44", "Scallop, Bay"
2017-04-13T19:11:05Z, ce33ea99-5f3b-9s9b, "223", "Scallop, Calico"

每个事件集合都有一个 CSV,例如“view_fish”、“save_fish”等。

然后您可以使用Keen CLI加载它们中的每一个:

$ keen events:add --collection view_fish --file view_fish_events.csv --csv
$ keen events:add --collection save_fish --file save_fish_events.csv --csv
$ keen events:add --collection view_regulation --file view_regulation_events.csv --csv
$ keen events:add --collection save_regulation --file save_regulation_events.csv --csv
于 2017-06-13T19:22:37.243 回答