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 likeregexreplace(file.folder, "^(.*/)(.+)$", "$2")
by usingFLATTEN
- 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)
```