【发布时间】:2017-02-01 22:52:07
【问题描述】:
我正在研究使用 BigQuery 按时间序列存储传感器数据的可行性。目的是将数据存储在 BQ 中并在 Pandas 中处理......到目前为止一切都很好...... Pandas 可以解释 TIMESTAMP 字段索引并创建一个系列。
另一个要求是数据支持任意标签作为键/值对(例如 job_id=1234、task_id=5678)。 BigQuery 可以使用 RECORD 类型的 REPEATED 字段很好地支持这一点:
{'fields':
[
{
"mode": "NULLABLE",
"name": "timestamp",
"type": "TIMESTAMP"
},
{
"mode": "REPEATED",
"name": "tag",
"type": "RECORD",
"fields":
[
{
"name":"name",
"type":"STRING"
},
{
"name":"value",
"type":"STRING"
},
{
"mode": "NULLABLE",
"name": "measurement_1",
"type": "FLOAT"
},
{
"mode": "NULLABLE",
"name": "measurement_2",
"type": "FLOAT"
},
{
"mode": "NULLABLE",
"name": "measurement_3",
"type": "FLOAT"
},
]
},
]
}
这对于存储数据非常有用,如果我只需要过滤单个键/值组合,它甚至对于查询也非常有用
SELECT measurement_1 FROM measurements
WHERE tag.name = 'job_id' AND tag.value = '1234'
但是,我还需要能够在查询表达式中组合标签集,但我似乎无法完成这项工作。例如此查询不返回任何结果
SELECT measurement_1 FROM measurements
WHERE tag.name = 'job_id' AND tag.value = '1234'
AND tag.name = 'task_id' AND tag.value = '5678'
问题:是否可以使用此架构制定查询来执行我想要的操作?将此类变量数据附加到 Big Query 中原本固定的架构的推荐方法是什么?
感谢您的任何帮助或建议!
注意:如果您认为这看起来像是对 InfluxDB 的一个很好的修复,那是因为这是我迄今为止一直在使用的。看似无法克服的问题是我的数据集中的系列基数,所以我正在寻找替代方案。
【问题讨论】:
-
为什么要标记 python、pandas 和时间序列?
-
重要的是,您可以使用已发布答案左侧投票下方的勾号来标记已接受的答案。请参阅meta.stackexchange.com/questions/5234/… 了解为什么它很重要。对答案进行投票也很重要。投票选出有帮助的答案。还有更多...您可以查看当有人回答您的问题时该怎么做 - stackoverflow.com/help/someone-answers。
标签: google-bigquery google-cloud-bigtable