6个版本 (3个重大更新)

0.41.0 2024年8月15日
0.40.0 2024年7月29日
0.2.0 2024年6月12日
0.1.3 2024年5月14日

#28数据库实现

Download history 204/week @ 2024-04-26 901/week @ 2024-05-03 517/week @ 2024-05-10 367/week @ 2024-05-17 374/week @ 2024-05-24 342/week @ 2024-05-31 398/week @ 2024-06-07 357/week @ 2024-06-14 472/week @ 2024-06-21 408/week @ 2024-06-28 137/week @ 2024-07-05 149/week @ 2024-07-12 209/week @ 2024-07-19 564/week @ 2024-07-26 285/week @ 2024-08-02 366/week @ 2024-08-09

每月下载 1,474
用于 2 crates

Apache-2.0

52KB
1K SLoC

datafusion-functions-json

CI Crates.io

注意: 这不是Apache软件基金会官方发布版本,请参阅 datafusion-contrib/datafusion-functions-json#5.

此crate提供了一组用于在DataFusion中查询JSON字符串的函数。这些函数作为标量函数实现,可以在SQL查询中使用。

要使用这些函数,只需调用

datafusion_functions_json::register_all(&mut ctx)?;

在您的 SessionContext 中注册以下JSON函数。

完成

  • json_contains(json: str, *keys: str | int) -> bool - 如果JSON字符串包含特定键则为true(用于?运算符)
  • json_get(json: str, *keys: str | int) -> JsonUnion - 通过“路径”从JSON字符串中获取值
  • json_get_str(json: str, *keys: str | int) -> str - 通过“路径”从JSON字符串中获取字符串值
  • json_get_int(json: str, *keys: str | int) -> int - 通过“路径”从JSON字符串获取整数值
  • json_get_float(json: str, *keys: str | int) -> float - 通过“路径”从JSON字符串获取浮点值
  • json_get_bool(json: str, *keys: str | int) -> bool - 通过“路径”从JSON字符串获取布尔值
  • json_get_json(json: str, *keys: str | int) -> str - 通过“路径”从JSON字符串获取嵌套的原始JSON字符串
  • json_as_text(json: str, *keys: str | int) -> str - 通过“路径”从JSON字符串获取任何值,以字符串形式表示(用于->>运算符)
  • json_length(json: str, *keys: str | int) -> int - 获取JSON字符串或数组的长度

使用json_get的转换表达式将被重写为适当的方法,例如。

select * from foo where json_get(attributes, 'bar')::string='ham'

将被重写为

select * from foo where json_get_str(attributes, 'bar')='ham'

待办事项(也许,如果它们实际上有用的话)

  • json_keys(json: str, *keys: str | int) -> list[str] - 获取JSON字符串的键
  • json_is_obj(json: str, *keys: str | int) -> bool - 如果JSON是对象则返回true
  • json_is_array(json: str, *keys: str | int) -> bool - 如果JSON是数组则为true
  • json_valid(json: str) -> bool - 如果JSON有效则为true

依赖项

~26–41MB
~682K SLoC