Morphには、SQLやPythonのコードをより簡単に記述するためにテンプレートの機能があります。 テンプレートには2種類存在しています。

標準で用意されているテンプレート  (Built-in Template)

ソースコードをワークスペース上で開くとMorphチームが作成した標準のテンプレートが右のサイドバーから確認することができます。 このテンプレートは、Morphのフレームワークのスニペットの役割をしており、コピーをすることですぐに分析部分の実装を開始することができます。

テンプレートの要望がある場合には、shibata@morphdb.ioまで是非リクエストください!

自作テンプレート (Custom Template)

templatesフォルダでは、ユーザー定義のテンプレートファイルを作成して管理することができます。

作成したテンプレートからmorph createコマンドで新規ファイルを作ることができます。またmorph searchコマンドで検索することもできます。

テンプレートの作成手順

(手順1) テンプレートファイルの作成

テンプレートファイルはtemplatesディレクトリ配下に作成します。

作成時には以下のプレースホルダーを定義できます。(プレースホルダーで定義した値は後述するmorph createコマンドのオプションで指定することで、置換してファイルが作成されます。)

  • ${MORPH_NAME}: テンプレート名(旧エイリアス)に置換されます。(morph createコマンドの--nameオプションの指定)
  • ${MORPH_DESCRIPTION}: テンプレート説明に置換されます。(morph createコマンドの—-descriptionオプションの指定)

E.g.)

import pandas as pd

import morph
from morph import MorphGlobalContext

# morph.func is a decorator that takes in the following parameters:
# name: The identifier for the file alias. The function name will be used if not provided.
# description: The description for the function.
# output_paths: The destination paths for the output.
# output_type: The return type of the function
@morph.func(
    name="${MORPH_NAME}",
    description="${MORPH_DESCRIPTION}",
    output_paths=["_private/{name}/{now()}{ext()}"],
    output_type="dataframe",
)
def main(context: MorphGlobalContext) -> pd.DataFrame:
    return pd.DataFrame({{"key1": [3, 2, 1], "key2": [5, 4, 3]}})

(手順2) template.yamlの編集

templatesフォルダ直下のtemplate.yamlを編集します。Syntaxは以下の例を参考にしてください。

※srcはフルパスまたはtemplate.yamlからの相対パスで定義します。

E.g.)

# [Description]
# This file is used to manage your local templates.
#
# [Syntax]
# This file is written in YAML format. The following is an example of the syntax.
#   E.g.)
#     templates:
#       - name: <template_name> [required]
#         title: <template_title>
#         description: <template_description>
#         src: <template_source> [required]
#         language: <template_language> [required|options:"python", "sql"]
#
# [Compiling]
# After editing this file, you need to compile it using the following command.
# This command will validate the syntax of the file and make sure your templates are available.
#   E.g.)
#     $ morph template compile

templates:
  - name: test
    title: Test Template
    description: This is a test template.
    src: ./python/test.py
    language: python

(手順3) コンパイル

以下のコマンドでtemplate.yamlの妥当性をチェックすることができます。テンプレートファイルを作成してtemplate.yamlの編集まで終わったら、VSコードのターミナルから以下のコマンドを叩いてください。

$ morph template compile
$ # 実行して何も表示がなければ成功です🎉

テンプレートの利用方法

設定をしたテンプレートはワークスペースの右側のメニューやキャンバス内の新規作成時に使用することができます。

テンプレート一覧から選択

キャンバスから選択

CLIからテンプレートを利用する方法

以下のコマンドで作成できます。

<テンプレート名>はtemplate.yamlで定義したnameを指定します。また、テンプレートAPI が返却するnameを指定することで、グローバルのテンプレートを利用することもできます。

# morph create <作成するファイル> —template <テンプレート名>
$ morph create src/test.py --template test