google-visualization - 如何在 Google 可视化 API 查询语言中转义列名?
问题描述
我有一个 Google 工作表,它在以下表达式中生成错误:
=query(Capacity!A5:FE135,"SELECT C,A WHERE "&SUBSTITUTE(ADDRESS(1,match(D2,Capacity!A1:FE1,0)+2,4),"1","")&" = '"&C2&"' AND "&SUBSTITUTE(ADDRESS(1,match(D2,Capacity!A1:FE1,0),4),"1","")&" = 1 ORDER BY C")
对于单个特定输入值(日期),位于D2
.
本质上,代码的目的是在第二张表(容量)中找到日期的列位置,并将D2
该表中该列的值放入C
当前表中的列中,同时仅选择匹配的行第二列。但是,当日期设置为特定值时,表达式将不会计算。
将这个庞大的表达式分解为其组成部分后,事实证明问题是由这个表达式引起的:
=SUBSTITUTE(ADDRESS(1,match(D2,Capacity!A1:FE1,0)+2,4),"1","")
其中,对于违规日期,正在返回 column BY
。
这意味着在 Google Visualization API 查询语言中评估的表达式是:
SELECT C,A WHERE BY = '' AND BW = 1 ORDER BY C
但查询语言将BY
其视为保留字,而不是列,并且 barfs。
如何以某种方式转义列名以明确将其视为列名?
解决方案
方法是用反引号将有问题的部分括起来(就像我曾经在monospaced
这里制作文本一样):
=query(Capacity!A5:FE135,"SELECT C,A WHERE `"&SUBSTITUTE(ADDRESS(1,match(D2,Capacity!A1:FE1,0)+2,4),"1","")&"` = '"&C2&"' AND `"&SUBSTITUTE(ADDRESS(1,match(D2,Capacity!A1:FE1,0),4),"1","")&"` = 1 ORDER BY C")
所以查询看起来像
SELECT C,A WHERE `BY` = '' AND `BW` = 1 ORDER BY C
我认为当工作表变得如此之大以至于我们也在列时,这将有所帮助IF
。
推荐阅读
- python - 将排序从 Python2 转换为 Python3
- php - 如何根据 laravel 5.6 中的 id 检查唯一值?
- unit-testing - 通过 SBT 合并 JUnit 结果
- r - get() 闪亮的上传文件的名称
- python - 将列表元素的关键字与 pandas 列匹配
- javascript - 通过函数导出组件时如何保留引用?
- c# - linq如何将符号添加到csv中的空行
- python-2.7 - 用python绘制一个3D条形直方图
- unicode - 如果字体字形不是 Unicode 的一部分,则它们映射到什么字体
- database - Postgresql 串行或自定义主键