首页 > 解决方案 > 在databricks sql中选择以'@'开头的列

问题描述

我通过logstash进入elasticsearch。我在databricks中导入数据,首先通过python扫描,然后将数据转换为dataframe。然后将dataframe转换为databricks中的临时视图。然后可以在 sql 建模中使用此视图。此过程无法更改

当我查询时:Select * from tempview然后我得到所有列:)

在此处输入图像描述

现在的挑战:我的一个字段名称称为@timestamp,我可以看到数据块显示该列存在,但我无法选择该列本身。在 T-SQL 中,我本来可以使用方括号 [@timestamp] 并继续前进,但它在 hivesql 中不起作用。

我知道 @name 语法是为 sql 变量保留的,但是有解决方法吗?

标签: elasticsearchlogstashhiveqldatabricks

解决方案


使用反引号`

select `@timestamp`, `@version` from t

火花外壳示例:

Seq((1, "a", "10")).toDF("id", "@version", "@timestamp").registerTempTable("t")
sql ("select `@timestamp`, `@version` from t").show

+----------+--------+
|@timestamp|@version|
+----------+--------+
|        10|       a|
+----------+--------+

推荐阅读