さがらです。
早速ですが、dbtのDecriptionといえば、基本的には以下のように直書きで色々書くことが多いと思います。
version: 2
models:
- name: events
description: This table contains clickstream events from the marketing website
columns:
- name: event_id
description: This is a unique identifier for the event
tests:
- unique
- not_null
ただ、「Decription内にMarkdownで整理・強調させた表現を入れたい…」というケースはあると思います。
そんなときに使える方法を3つ試してみたので、本記事でまとめてみます。
参考
今回検証する内容ですが、以下の内容を参考にしております。こちらも併せてご覧ください。
方法その1:「>」を使う
まず1つ目は、下記のようにDescriptionに「>」を入れる方法です。強調表現やリンクの設定も可能です。
**ただし、この方法は改行に対応していないため注意が必要です。
version: 2
models:
- name: customers
description: >
これは**強調表現**です。[クラスメソッドのHPへのリンク](https://classmethod.jp/)です。
方法その2:「|」を使う
2つ目の方法ですが、下記のようにDescriptionに「|」を入れる方法です。この方法ならば、改行を入れることも可能なため、見出しや箇条書きにも対応しています。
version: 2
models:
- name: customers
description: |
# 見出し1
- これは**強調表現**です。
- [クラスメソッドのHPへのリンク](https://classmethod.jp/)です。
## 見出し2
1. 番号1
2. 番号2
方法その3:docsブロックを使う
3つ目の方法ですが、別途.md
のファイルを定義しておき、その.md
ファイルの中で{% docs hogehoge %}
ブロック内でMarkdowdnでDescriptionの内容を記述し、yamlファイルからは'{{ doc("hogehoge") }}'
で参照するという方法です。
この方法ならば、改行もできる上、複数の同名カラムで使い回すことも可能です。ただ、docsブロックの命名規則や管理方法などには注意が必要となります。
- models/_docs_customers.md
{% docs table_customers %}
# 見出し1
- これは**強調表現**です。
- [クラスメソッドのHPへのリンク](https://classmethod.jp/)です。
## 見出し2
1. 番号1
2. 番号2
{% enddocs %}
- models/schema.yml
version: 2
models:
- name: customers
description: '{{ doc("table_customers") }}'
おまけ:dbt ExplorerでもMarkdownが反映されているか確認してみた
最後におまけですが、dbt ExplorerでもMarkdownが反映されているか確認してみました。
こちらも、下図のように問題なく確認できました!