Google bigquery 任意标记的BigQuery模式设计

Google bigquery 任意标记的BigQuery模式设计,google-bigquery,google-cloud-bigtable,Google Bigquery,Google Cloud Bigtable,我正在研究使用BigQuery在时间序列中存储传感器数据的可行性。其目的是将数据存储在BQ中,并在。。。到现在为止,一直都还不错。。。Pandas可以解释时间戳字段索引并创建序列 另外一个要求是,数据支持任意标记作为键/值对(例如,job_id=1234,task_id=5678)。BigQuery可以通过重复记录类型的字段很好地支持这一点: {'fields': [

我正在研究使用BigQuery在时间序列中存储传感器数据的可行性。其目的是将数据存储在BQ中,并在。。。到现在为止,一直都还不错。。。Pandas可以解释时间戳字段索引并创建序列

另外一个要求是,数据支持任意标记作为键/值对(例如,job_id=1234,task_id=5678)。BigQuery可以通过重复记录类型的字段很好地支持这一点:

                   {'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'
问题:是否可以使用这个模式来构造一个查询来做我想做的事情?在大查询中,将这种类型的变量数据附加到其他固定模式的建议方法是什么

谢谢你的帮助和建议

注意:如果您认为这看起来是一个很好的XDB修复程序,那是因为到目前为止我一直在使用它。似乎无法解决的问题是我的数据集中的系列基数的数量,因此我正在寻找替代方案。

BigQuery遗留SQL

SELECT measurement_1 FROM measurements 
OMIT RECORD IF
  SUM((tag.name = 'job_id' AND tag.value = '1234')
   OR (tag.name = 'task_id' AND tag.value = '5678')) < 2

重复是存储数据系列、收集等的好方法。
为了从重复的字段中筛选出一个感兴趣的值,我将使用以下模板

SELECT 
    MAX( IF( filter criteria,  value_to_pull, null)) WITHIN RECORD AS some_name
FROM <table>

为什么要标记python、pandas和time series?重要的是,您可以通过使用投递答案左侧投票下方的勾号来标记已接受的答案。看看为什么它很重要。同样重要的是对答案进行投票。投票选出有帮助的答案。还有更多。。。当有人回答你的问题时,你可以检查一下该做什么。
SELECT 
    MAX( IF( filter criteria,  value_to_pull, null)) WITHIN RECORD AS some_name
FROM <table>
SELECT
  MAX(IF(tag.name = 'job_id' AND tag.value = '1234', measurement_1, NULL)) WITHIN RECORD AS job_1234_meassurement_1,
  MAX(IF(tag.name = 'task_id' AND tag.value = '5678', measurement_1, NULL)) WITHIN RECORD AS task_5678_meassurement_1,
  FROM measurements