概要
Databricksにて環境情報(開発環境・本番環境)を切り替える方法として、環境に関する情報をステージ(開発、検証、本番)ごとにPythonの辞書として定義しておき、パラメータにより取得する情報を切り替える方法を共有します。
環境を切り替えるノートブック(switch_evn_inf)と環境のステージ(dev、prd)ごとのノートブックを作成することを想定しております。
詳細は下記のGithub pagesのページをご確認ください。
コードを実行したい方は、下記のdbcファイルを取り込んでください。
https://github.com/manabian-/databricks_tecks_for_qiita/blob/main/tecks/swich_env_inf/dbc/swich_env_inf.dbc
手順
1. 環境情報を辞書型変数にセット
文字型変数としてセットしたい場合には、シングルクォーテーションの中でダブルクオーテーションで囲ってください(例:'"dev_d"')。
env_dict = {}
# 検証環境の情報をdictに設定
dev_env_dict = {
"dev": {
'string': '"dev_d"',
'int': '123',
'float': '1.23',
'boolean': 'True',
'list': '["A","B"]',
'dict': '{"a":"A","b":"B"}',
}
}
# 共通のdictに検証環境のdictをappend
env_dict.update(prd_env_dict)
# 本番環境の情報をdictに設定
prd_env_dict = {
"prd": {
'env': '"prd"',
'port': '15001',
}
}
# 共通のdictに本番環境のdictをappend
env_dict.update(prd_env_dict)
2. 辞書型変数から変数をセットする関数を定義
def swich_env_inf(target_env_dict):
for attribute, value in target_env_dict.items():
code=textwrap.dedent(f'''
global {attribute}
{attribute}={value}
''').strip()
exec(code)
3. 環境①の変数を定義
# 環境①の環境名をセット
target_env = 'dev'
target_env_dict = env_dict[target_env]
swich_env_inf(target_env_dict)
4. 環境の②の変数を定義
# 環境①の環境名をセット
target_env = 'prd'
target_env_dict = env_dict[target_env]
# 環境①の環境名をセット
target_env = 'prd'
target_env_dict = env_dict[target_env]