在 aws Athena 的视图中使用“$path”

Using "$path" on view in aws Athena

我有一个 table,里面有一个复杂的类型字段(有点像 json)。 我在 table 上创建了一个视图,以将复杂类型取消嵌套到 table。

创建或替换 VIEW 测试 AS SELECT , "t1"."第一" , "内在"."inner_first" , "$路径" 从 t t1 , UNNEST("内部") t (内部) 限制 10

我使用 $path 函数根据文件名查询我的数据。

不幸的是,当我尝试在视图上查询 $path 时它不起作用,只是没有返回任何内容。 所以我决定将 $path 字段添加到我的视图中,以便在外部查询它(如上所示)。

但它仍然有效,当我查询时: select * 来自测试 其中“$路径”= 'x'

我没有得到相关结果。 好像 s3 路径里面的东西出了问题。

当我尝试:where "$path" like '%s3://bucket/output/table/part-00000-01131f4f-3fba-4711-8372-11df66a4224a-c000.snappy.parquet%' -> 它仍然无法正常工作。 当我尝试时:

  1. 其中“$path”如“%c000.snappy.parquet%” 或者
  2. 其中“$path”如“%part-00000-%” 它突然适用于非常小的字符集。

但我无法理解其中的逻辑,我考虑过隐藏字符,但归根结底,它只是一个常规的 s3 路径,例如: s3://bucket/output/table/part-00000-01131f4f-3fba-4711-8372-11df66a4224a-c000.snappy.parquet

如果您遇到过这种奇怪的情况,请告诉我。

谢谢!

您需要给“$path”一个别名才能查询该列,或者使用默认的_col4。例如:

create view myview as select "$path" as path from...

然后

select path from myview