🦆

Appsheetで月別集計を行いたい(設計)

2025/02/13に公開

なぜ作成したのか

  • 社員の取得資格の管理をAppsheetで行っている
  • 資格の多くには有効期限があり、取得していた社員がやめてしまった場合も会社としては意味をなさなくなる
  • 結果、どの時点でどのくらいの資格が保有されているか、という情報を可視化できたほうが良いと思い至った
  • そうなると、年月別の有効資格数を見えるようにしたくなった

参考

https://www.appsheet-japan-community.com/forumclosed/atupusito-huoramu/ji-lu-appnoji-ji-chu-li-nituite

データ構造

---
title: "データ構造"
---
erDiagram
    CERTIFICATION {
        int id PK
        string name
    }
    
    EMPLOYEE {
        int id PK
        string name
        date startDate
        date endDate
    }
    
    ARCHIVE {
        int id PK
        int certificationId FK
        int employeeId FK
        date createDate
        date expiredDate
    }

    CERTIFICATION ||--o{ ARCHIVE : has
    EMPLOYEE ||--o{ ARCHIVE : has

やりたいこと

  • 指定の年月の時点で有効な取得資格数(=archiveの件数)を集計する

有効な資格の判断

AND(
  // 取得資格が有効期限内
  AND(
    [archive].[createDate]>基準日,
    OR(
      isblank([archive].[expiredDate]),
      [archive].[expiredDate]>基準日)
      )
  // 従業員が就業期間中
  AND(
    [employee].[startDate]>基準日,
    OR(
      isblank([employee].[endDate]),
      [employee].[endDate]>基準日)
      )
)

集計単位

  • 基準日の年、月単位

集計の実装(検討)

1.年月マスタを新規に作成

  • 集計するためのテーブルを作成する
    • データソースにGoogleカレンダー設定して、年月単位で集計できると楽だったが、既定のDateTime型をうまく当てはめる/分解する方法が思いつかない
id yyyymm
aaaaaaaa 202501
aaaaaaab 202502
: :

2.年月マスタにてVCを新規作成、countMおよびSELECT関数を利用して集計

  • VirtualColumn で validArchive列を作成し、「有効な資格の判断」に合致する取得資格数を集計する関数を設定する
id yyyymm validArchive(VC)
aaaaaaaa 202501 f(x)
aaaaaaab 202502 f(x')
: :

3.ChartFormでグラフ化

  • 件数の推移を可視化する
    • グラフからドリルダウンできるのが理想だが、Ref列として連携してないので無理

所感

  • とりあえず明日勤務時間に実装してみる
  • これを作ることで、現時点の資格取得情報を把握できるようになる(AWSパートナーTierに必要な資格取得状況とかみやすくなる)
  • また、将来的な資格取得計画、それに伴う予算の見通しがつけやすくなるといいな
  • 個人的に情シスは会社が推奨する資格取得制度がないので、自分にとって利点は何もない。若人に正しく予算配分されて、スキルアップされればよいのだ(老)
GitHubで編集を提案

Discussion