Obsidian Dataview 函数参考指南:数据处理的强大工具

Obsidian Dataview 函数参考指南:数据处理的强大工具

obsidian-dataview A high-performance data index and query language over Markdown files, for https://obsidian.md/. obsidian-dataview 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-dataview

概述

Obsidian Dataview 提供了一系列功能强大的函数,用于在查询中对数据进行高级处理和转换。这些函数可以在数据命令(FROM 除外)中使用,用于过滤、分组数据,也可以作为 TABLE 列或 LIST 查询的附加信息,让您以全新的视角查看数据。

函数基础

函数语法

函数本质上是一种特殊的表达式,可以在任何允许使用表达式的地方调用。函数调用遵循以下格式:

函数名(参数1, 参数2)

参数本身也可以是表达式,可以是字面量、元数据字段,甚至是另一个函数调用。每个函数对参数的数据类型都有特定要求,使用时需要注意。

可选参数

在函数文档中,方括号内的参数表示是可选的,可以省略。例如 link(path, [display]) 中的 display 参数就是可选的。

列表处理特性

大多数函数既可以应用于单个值(如数字、字符串、日期等),也可以应用于这些值的列表。当应用于列表时,函数会对列表中的每个元素分别执行操作,并返回一个新的列表。例如:

lower("YES") = "yes"
lower(["YES", "NO"]) = ["yes", "no"]

这种"函数向量化"特性在下文的函数定义中不会特别说明,但对大多数函数都适用。

构造函数

创建基础数据类型

  1. object(key1, value1, ...)
    创建一个新对象,键和值应交替提供,键必须是字符串。

    object("a", 6) // 创建映射"a"到6的对象
    
  2. list(value1, value2, ...)
    创建一个包含给定值的新列表,array 是其别名。

    list(1, 2, 3) // 创建包含1,2,3的列表
    
  3. date(any)
    从字符串、日期或链接对象解析日期。

    date("2020-04-18") // 解析为日期对象
    
  4. dur(any)
    解析持续时间字符串为持续时间对象。

    dur("8 minutes, 4 seconds") // 解析为8分4秒
    
  5. number(string)
    从字符串中提取第一个数字。

    number("18 years") // 返回18
    

类型转换函数

  1. string(any)
    将任何值转换为合理的字符串表示。

    string(dur(8 hours)) // 返回"8 hours"
    
  2. link(path, [display])
    从文件路径或名称构造链接对象。

    link("Hello", "Goodbye") // 创建显示为"Goodbye"的链接
    
  3. embed(link, [embed?])
    将链接对象转换为嵌入式链接(对图片支持较好)。

  4. elink(url, [display])
    构造外部URL链接。

    elink("www.google.com", "Google")
    
  5. typeof(any)
    获取对象的类型。

    typeof([1, 2, 3]) // 返回"array"
    

数值运算

基本数学运算

  1. round(number, [digits])
    四舍五入到指定小数位。

    round(16.555555, 2) // 16.56
    
  2. trunc(number)
    截断小数部分。

    trunc(-93.33333) // -93
    
  3. floor(number)
    向下取整。

    floor(-0.837764) // -1
    
  4. ceil(number)
    向上取整。

    ceil(-0.837764) // 0
    

统计函数

  1. min/max(a, b, ...)
    计算最小值/最大值。

    max("a", "ab", "abc") // "abc"
    
  2. sum/product(array)
    计算数组的和/积。

    product([1,2,3]) // 6
    
  3. average(array)
    计算平均值。

    average([1, 2]) // 1.5
    
  4. reduce(array, operand)
    通用归约函数,支持加减乘除和布尔运算。

    reduce([100,20,3], "-") // 77
    

高级统计

  1. minby/maxby(array, function)
    使用指定函数计算最小/最大值。
    maxby(file.tasks, (k) => k.due) // 最晚到期任务
    

对象、数组和字符串操作

包含检查

  1. contains(object|list|string, value)
    检查容器是否包含值(区分大小写)。

    contains("hello", "lo") // true
    
  2. icontains()
    不区分大小写的版本。

  3. econtains()
    精确匹配检查。

    econtains(["words"], "word") // false
    
  4. containsword()
    检查单词精确匹配(不区分大小写)。

    containsword("Hello there!", "hello") // true
    

数组操作

  1. extract(object, key1, key2, ...)
    从对象提取指定字段。

    extract(file, "ctime", "mtime")
    
  2. sort/reverse(list)
    排序/反转列表。

    sort(list(3, 2, 1)) // [1,2,3]
    
  3. length(object|array)
    获取对象字段数或数组长度。

  4. nonnull(array)
    移除数组中的null值。

  5. filter(array, predicate)
    过滤数组元素。

    filter([1,2,3], (x) => x >= 2) // [2,3]
    
  6. map(array, func)
    映射数组元素。

    map([1,2,3], (x) => x + 2) // [3,4,5]
    
  7. flat(array, [depth])
    展平嵌套数组。

    flat(list(1, list(2,3))) // [1,2,3]
    

逻辑运算

  1. all(array)
    检查所有元素是否为真。

    all([true, false]) // false
    
  2. any(array)
    检查任一元素为真。

    any([false, true]) // true
    
  3. none(array)
    检查无元素为真。

    none([false, false]) // true
    

字符串操作

正则表达式

  1. regextest(pattern, string)
    检查正则是否匹配字符串部分内容。

    regextest("\w+", "hello") // true
    
  2. regexmatch(pattern, string)
    检查正则是否匹配整个字符串。

  3. regexreplace(string, pattern, replacement)
    正则替换。

    regexreplace("Suite 1000", "\d+", "-") // "Suite -"
    

基本字符串操作

  1. replace(string, pattern, replacement)
    简单字符串替换。

    replace("The big dog", "big", "small")
    
  2. lower/upper(string)
    转换大小写。

    lower("TEST") // "test"
    

总结

Obsidian Dataview 的函数库提供了强大的数据处理能力,从简单的类型转换到复杂的统计运算,再到灵活的正则处理,几乎涵盖了知识管理中的所有数据处理需求。掌握这些函数的使用,可以大幅提升您在 Obsidian 中组织和分析数据的效率。

建议从基础构造函数和简单运算开始练习,逐步掌握更高级的函数组合使用技巧。在实际应用中,这些函数往往需要组合使用,才能发挥最大威力。

obsidian-dataview A high-performance data index and query language over Markdown files, for https://obsidian.md/. obsidian-dataview 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-dataview

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范靓好Udolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值