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 の優れた修正のように見えると思われる場合は、それは私がこれまで使用してきたものだからです。一見克服できない問題は、データ セット内のシリーズ カーディナリティの量です。そのため、代替手段を探しています。