【问题标题】:BigQuery - Build a Dynamic Select Statement/Query Based on Fields/FiltersBigQuery - 基于字段/过滤器构建动态选择语句/查询
【发布时间】:2016-03-29 19:53:54
【问题描述】:

我已经到处寻找解决下面提到的场景的方法,但没有运气。注意 - 我是一名编码新手,但目前正在学习 Python 作为我的主要编程语言。

简而言之,我在 BigQuery 中有一个表,其中第一列包含字符串,而其他每一列都包含整数。整数列的标题使用“月_年”格式。我希望我的用户能够在文本框中输入一个单词并选择一个“开始”日期和一个“结束”日期,然后运行查询,以便它将该单词的数据作为这些日期之间的趋势图返回。

我在 Excel 中工作得很好,因此我能够使用链接到单元格的 ActiveX 控件来操作查询,然后通过数据连接执行它。下面是一个适用于 Excel 的查询示例:

SELECT que, jan_15, feb_15, mar_15, apr_15, FROM [xxx.xxxx] WHERE (que CONTAINS 'VITAMINS') ORDER BY 1 DESC, LIMIT 1000

因此,“VITAMINS” - 将是文本框值,“jan_15, feb_15, mar_15, apr_15” 将是“开始”日期和“到”日期值。

我想用 Python 复制它。除了月度数据,我还将为日常数据和年度数据创建表格,因此允许用户设置开始/结束日期以按日、月或年进行搜索会很棒。

谢谢!

【问题讨论】:

  • 即使您是初学者,您能否发布代码以进行最佳尝试?谢谢。
  • 嘿@Irnzcig - 老实说,我一直在转圈,所以目前没有代码可以显示。我只有使用 VBA 按需工作的 Excel 工作簿。到目前为止,我发现的最接近的是:demo.easyquerybuilder.com/asp-net-ajax - 当用户添加过滤器/条件时,查询构建在左下角。
  • 嗯,我明白了,但关键是你的问题,就像现在一样,真的很广泛,看起来有点像编程服务请求......我相信这不是你的意图,所以在我看来,您应该尝试将其缩小到更具体的疑问(或疑问)。即使您的代码不完整,比如说其中一个试验,是什么阻止了您?这样,我想你会有更多的机会得到一个好的答案。
  • 动态查询是社区长期以来一直在询问的一项功能。在这里投票:code.google.com/p/google-bigquery/issues/…。希望他们能尽快开发它。

标签: javascript jquery python google-bigquery


【解决方案1】:

您应该重新考虑您的设计并将数据检索和表示层分开
因此,当您从 Excel 迁移到 BigQuery 时,我强烈建议您更改架构。
根据您的示例,它可能只有几列:

  • que 字符串
  • 年份字符串
  • 字符串
  • 公制整数

在这种情况下,您需要构建的查询非常简单(仅作为示例)

SELECT que, TIMESTAMP([year] + '-' + [month] + '-01') AS ts, metric
FROM YourTable
WHERE que = 'VITAMINS'
AND TIMESTAMP([year] + '-' + [month] + '-01') 
  BETWEEN TIMESTAMP('2015-01' + '-01') AND TIMESTAMP('2015-04' + '-01')

其中“维生素”、“2015-01”和“2015-04”来自用户输入

当您的客户端应用程序构建并运行上述查询时 - 您现在可以使用输出来构建图表

您可以为日常数据和早期数据使用类似的架构
但是,此外,如果您的指标是累加的 - 您不需要三个单独的表
只需拥有每日表,然后您就可以汇总到每月或每年查询所需的级别

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2015-03-12
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    相关资源
    最近更新 更多