Dataview plugin snippet showcase

Topic

Summary
  • How to get the s_file_parent_name of a file? (DQL10)
  • How to get the parent_foldernote of a file? (DQL20)

Test

Summary
  • dataview: v0.5.46

input

Summary

dictionary files:

  • Location: “100_Project/02_dataview/Q83_FolderNote/Q83_test_data”

  • filename : Q83_test_data.md
---
Date: 1990-12-31
---

### this is a folder note



folder: 1990-03

  • filename : 1990-03.md
---
Date: 1990-03-31
---

### this is a folder note



  • filename : dic_19920301.md
---
Date: 1990-03-01
---

## input
### milestones
- [type:: "food"] [desc:: "breakfast"] [cost:: 10] #Test/d01 [[Note J]] , [[Note K]]
- [type:: "food"] [desc:: "breakfast"] [cost:: 20] #Test/d02  [[Note J]]



  • filename : dic_19900306.md
---
Date: 1990-03-06
---

## input
### milestones



folder: 1990-04

  • filename : 1990-04.md
---
Date: 1990-04-30
---

### this is a folder note



  • filename : dic_19900401.md
---
Date: 1990-04-01
---

## input
### tasks
- [ ] [type:: "food"] [desc:: "breakfast"] [cost:: 100] #Test/d01 [[Note P]] , [[Note Q]]
- [ ] [type:: "food"] [desc:: "breakfast"] [cost:: 200] #Test/d02  [[Note P]]



  • filename : dic_19900406.md
---
Date: 1990-04-06
---

## input
### tasks



folder: 1990-05

  • filename : 1990-05.md
---
Date: 1990-05-31
---

### this is a folder note




DQL10_get_the_file_parent_name_of_a_file_and_LIST

Summary

Main DQL

Code Name Data type Group By Purposes Remark
DQL10_get_the
_file_parent_name
_of_a_file
_and_LIST
file.folder:
a string
yes 1.To define a field variable s_file_parent_name
2.To filter by file.name
3.To group by a link
4.To display the result as a list
1.The “parent link” doesn’t link to the folder note itself.
2.The Regular Expression in the DQL10 is based on the DQL10 in the following topic.
- Solutions: by Justdoitcc

Notes

Summary

Q: What does the following DQL statement mean?

FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name

To get the s_file_parent_name of a file
  • In English: To define a field variable s_file_parent_name as the expression like regexreplace(file.folder, "^(.*/)(.+)$", "$2") by using FLATTEN
  • In other words: let s_file_parent_name = regexreplace(file.folder, "^(.*/)(.+)$", "$2");
For example
  • file.path: 100_Project/02_dataview/Q83_FolderNote/Q83_test_data/1990-03/dic_19900301.md
  • file.folder: 100_Project/02_dataview/Q83_FolderNote/Q83_test_data/1990-03
  • s_file_parent_name: 1990-03
  • file.name: dic_19900301
  • file.ext: md

The same codes: to filter by file.name

  • To filter the data by file.name where file.name is not equal to s_file_parent_name
Original Example10
FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name
WHERE file.name != s_file_parent_name
Another Example11
FLATTEN split(file.folder, "/")[length(split(file.folder, "/")) - 1] AS s_file_parent_name
WHERE file.name != s_file_parent_name

DQL10_get_the_file_parent_name_of_a_file_and_LIST

Summary_code
title: DQL10_get_the_file_parent_name_of_a_file_and_LIST =>1.To define a field variable `s_file_parent_name` 2.To filter by file.name 3.To group by a link 4.To display the result as a list
collapse: close
icon: 
color: 
```dataview
LIST rows.file.link
FROM "100_Project/02_dataview/Q83_FolderNote/Q83_test_data"

FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name
WHERE file.name != s_file_parent_name

GROUP BY link(file.folder, s_file_parent_name)
```

Screenshots(DQL10)


DQL20_get_the_file_parent_name_of_a_file_and_LIST

Summary

Main DQL

Code Name Data type Group By Purposes Remark
DQL20_get_the
_file_parent_name
_of_a_file
_and_LIST
file.folder:
a string
yes 1.To define a field variable s_file_parent_name
2.To define a field variable parent_foldernote
3.To filter by file.name
4.To group by a link
5.To display the result as a list
1.The “parent link” actually links to the folder note itself.
2.The DQL20 is based on the DQL10 and SeanWcom’s suggestion.

Notes

Summary

The same codes: To get the parent_foldernote of a file

  • Take the file dic_19900301.md for example.
    • file.path: 100_Project/02_dataview/Q83_FolderNote/Q83_test_data/1990-03/dic_19900301.md
    • file.folder: 100_Project/02_dataview/Q83_FolderNote/Q83_test_data/1990-03
    • file.name: dic_19900301
    • file.ext: md
Original Example20: The absolute path
the slice of DQL
FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name
FLATTEN file.folder + "/" + s_file_parent_name + ".md" AS parent_foldernote
the result
  • s_file_parent_name: 1990-03
  • parent_foldernote : 100_Project/02_dataview/Q83_FolderNote/Q83_test_data/1990-03/1990-03.md
Original Example21: The absolute path
the slice of DQL
FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name
FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$1$2/$2.md") AS parent_foldernote
the result
  • s_file_parent_name: 1990-03
  • parent_foldernote : 100_Project/02_dataview/Q83_FolderNote/Q83_test_data/1990-03/1990-03.md
Another Example22: The relative path
the slice of DQL
FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name
FLATTEN s_file_parent_name + "/" + s_file_parent_name + ".md" AS parent_foldernote
the result
  • s_file_parent_name: 1990-03
  • parent_foldernote : 1990-03/1990-03.md
Another Example23: The relative path
the slice of DQL
FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name
FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2/$2.md") AS parent_foldernote
the result
  • s_file_parent_name: 1990-03
  • parent_foldernote : 1990-03/1990-03.md

DQL20_get_the_file_parent_name_of_a_file_and_LIST

Summary_code
title: DQL20_get_the_file_parent_name_of_a_file_and_LIST =>1.To define a field variable `s_file_parent_name` 2.To define a field variable `parent_foldernote` 3.To filter by file.name 4.To group by a link 5.To display the result as a list
collapse: close
icon: 
color: 
```dataview
LIST rows.file.link
FROM "100_Project/02_dataview/Q83_FolderNote/Q83_test_data"

FLATTEN regexreplace(file.folder, "^(.*/)(.+)$", "$2") AS s_file_parent_name
FLATTEN file.folder + "/" + s_file_parent_name + ".md" AS parent_foldernote

WHERE file.name != s_file_parent_name
GROUP BY link(parent_foldernote)
```

Screenshots(DQL20)

Part 1/2

Part 2/2


1 Like