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