Obsidian Bases — Référence technique : Créer, Embeder, Syntaxe, Filtres et Fonctions

Obsidian Bases — Référence technique: Créer, Embeder, Syntaxe, Filtres, Fonctions et Opérateurs

Référence exhaustive en français, basée sur la documentation Obsidian (Bases) et enrichie d’exemples applicatifs. Elle couvre la création/embedding, la structure YAML complète, la logique de filtres (and/or/not), les opérateurs, les fonctions (globales et par type), les types de propriétés (note/file/formula), et les pièges fréquents.

Créer et embeder une base

  • Palette : Bases: Create new base (fichier .base) ou Bases: Insert new base (bloc base intégré).
  • Explorateur : clic droit dossier → New base.
  • Ruban : Create new base (dossier du fichier actif).

Embed :

  • Fichier : ![[Nom.base]] · Vue spécifique : ![[Nom.base#Nom de la vue]]
  • Bloc : collez un bloc base avec YAML valide (voir ci‑dessous).

Structure YAML complète

Une base décrit filters, formulas, properties, views. Les filtres globaux (section filters) s’appliquent à toutes les vues et se concatènent en AND avec les filtres de vue.

```base
filters:
  or:
    - file.hasTag("writing/draft")
    - and:
        - file.hasTag("writing/idea")
        - not:
            - file.inFolder("Archive")
formulas:
  age_days: "((now() - file.ctime) / 86400000).toFixed(0)"
  priority_label: "if(priority >= 4, 'Haute', if(priority >= 2, 'Moyenne', 'Basse'))"
properties:
  formula.age_days: { displayName: "Âge (jours)" }
  formula.priority_label: { displayName: "Priorité" }
views:
  - type: table
    name: "Backlog"
    limit: 50
    filters: { and: [ "status != 'done'" ] }
    order: [ formula.priority_label, file.mtime ]
```

Filtres : conjonctions & éditeur avancé

Trois conjonctions : and (toutes vraies), or (au moins une), not (aucune). Les “statements” acceptent comparaisons, fonctions et propriétés.

  • Exemples : file.hasTag('writing/draft'), file.inFolder('Contacts'), file.mtime > now() - "7d", status == 'open'.
  • Global vs Vue : les filtres globaux + les filtres de la vue s’agrègent en AND.
  • Éditeur avancé : bouton “code” de la boîte de filtres pour les cas UI‑inexpressibles (regexp, fonctions imbriquées…).

Opérateurs : arithmétiques, comparaison, dates, booléens

  • Arithmétiques : + - * / % ( ) — ex. (price / age).toFixed(2)
  • Comparaison : == != > < >= <= — ex. priority >= 4
  • Booléens : ! && || — ex. !(status == 'done')
  • Dates : durées "14d" "1M" "2h" — ex. file.mtime > now() - "14d"

Fonctions : globales et par type

Globales (sans type) : if(), now(), today(), link(), image(), icon(), number(), list().

```base
formulas:
  formatted_price: "if(price, price.toFixed(2) + ' €')"
  badge: "link('[[NomDeNote]]', icon('arrow-right'))"
# Exemples de filtres
# file.mtime > now() - "30d"
# title.contains("Obsidian").and == true  # via éditeur avancé
```

Par type :

  • Date : format('YYYY-MM-DD'), relative(), date().time()
  • String : contains(), replace(), lower(), title(), trim()
  • Number : round(), toFixed(), abs()
  • List : contains(), map(), filter(), unique(), join()
  • File/Link : file.hasLink(), link().asFile(), file.asLink()

Types & propriétés : note.*, file.*, formula.*, this

  • note.* : frontmatter métier — ex. note.status, author.
  • file.* : méta — ex. file.ext, file.mtime, file.inFolder(), file.tags.
  • formula.* : calculs réutilisables — ex. formula.priority_label.
  • this (bases embarquées/sidebar) : référence la note courante/active — ex. file.hasLink(this.file).

Anti‑patterns & pièges usuels

  • Références circulaires entre formulas — scindez en formules A → B (pas B → A).
  • file.backlinks massifs — préférez file.links + filtres; limitez limit.
  • Littéraux YAML — entourez vos textes de guillemets; évitez les caractères spéciaux non échappés.
  • Types hétérogènes (ex. nombre vs texte) — normalisez les propriétés métier.

FAQ Bases

Puis‑je trier sur une formula ? Oui : order: [ formula.nom ].
Comment limiter les résultats ? Avec limit au niveau de la vue (ex. 50).
Comment filtrer par période ? file.mtime > now() - "7d", ou utilisez today() pour dates sans heure.
Un bloc base peut remplacer un fichier .base ? Oui, collez la même syntaxe YAML dans le bloc.

Vos idées méritent mieux
qu'un simple oubli.

Ne laissez plus le chaos vous ralentir. Recevez chaque mardi à 8h les systèmes mentaux pour penser en clair et bâtir votre second cerveau.