概要
データ分析において、データ抽出に年月のみ指定し、その年月の月初から月末までを取得する、、、、そんな理由でサクッと作ってみました。の第三弾!
Azureの請求データを CostManagement から取得するときに年月のみを指定し、その年月のデータを抽出することを想定しています。
実行環境
macOS Monterey 12.3.1
python 3.8.12
実行プログラム
BillingMonth.py
from datetime import *
from dateutil.relativedelta import relativedelta
import argparse
import sys
# パラメータ年月から月初-月末の取得
def month_period(bm):
try :
# 月初
bm = bm + '-01'
fm_datetime = datetime.strptime(bm, '%Y-%m-%d')
bm_fm = fm_datetime.strftime('%Y-%m-%d')
# 月末 (来月の1日に合わせて1日分戻る)
to_datetime = fm_datetime + relativedelta(months=+1,day=1,days=-1)
bm_to = to_datetime.strftime('%Y-%m-%d')
# print(fm_datetime)
# print(bm_fm)
# print(to_datetime)
# print(bm_to)
return bm_fm, bm_to
except ValueError as e :
print("ValueError = ", e)
sys.exit()
# 画面表示
def period_to_display(bm_fm, bm_to):
print('抽出期間 : ', bm_fm + ' 〜 ' + bm_to, '\n')
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='パラメータに年月を渡し、月初から月末までの年月日を返す')
parser.add_argument('-b', '--bm', type=str, required=True, help='取得する年月(yyyy-mm)')
args = parser.parse_args()
bm_fm, bm_to = month_period(args.bm)
period_to_display(bm_fm, bm_to)
プログラムのHELP表示
$ python BillingMonth.py -h
usage: BillingMonth.py [-h] -b BM
パラメータに年月を渡し、月初から月末までの年月日を返す
optional arguments:
-h, --help show this help message and exit
-b BM, --bm BM 取得する年月(yyyy-mm)
プログラムの実行
## うるう年
$ python BillingMonth.py -b 2020-02
抽出期間 : 2020-02-01 〜 2020-02-29
## ふつうの年
$ python BillingMonth.py -b 2022-02
抽出期間 : 2022-02-01 〜 2022-02-28
$ python BillingMonth.py -b 2022-4
抽出期間 : 2022-04-01 〜 2022-04-30
まとめ
これでAzureの請求データを年月指定でその月のデータのみを取得することができるようになります。また、この説明 から 時分秒の指定 がなくとも 日付のみ でその日の 23:59:59 までのデータをすべて取得できるようです。