Freee Accounting - 会計
freee API から仕訳帳データと勘定科目データを取得しています。
前提
主なデータの利用用途
- 会計レポート
- 役員が会計データを確認するため
- 経理の方がデータ入力時に確認するため
データの更新頻度
データの取得に 1 時間ほどかかるので、毎日実行はしません。
- 毎月 25 日 ~ 31 日
- 経理の方が毎月 24 日までにデータを入れるので、そのタイミングに合わせて実行します
- 役員会が毎月 25 日にあるので、24 日までだそうです
- 土日が被るとデータが入らない可能性があるので、25 日以降毎日実行しています
- 経理の方が毎月 24 日までにデータを入れるので、そのタイミングに合わせて実行します
- 毎週月曜日
- 役員会以外でも定期的にみる可能性があるので、毎週月曜日に実行するようにしています
データ責任者
| オーナー | 所属 | 責任者(現在) | 前任 |
|---|---|---|---|
| テクニカルオーナー | and roots | 堀 順郎 | - |
| ビジネスオーナー | and roots | - | - |
関連サービス
| 項目名 | 所有者 | 説明 |
|---|---|---|
| freee 会計 | フリー | クラウド型会計ソフト。 |
| Cloud Functions | and roots | サーバーレス環境で関数実行している。 |
| BigQuery | and roots | データの格納先。テーブル名は、Raw_<MultiTenant>_freee_<StreamId>_<TableName>に格納。 |
| TROCCO | primeNumber | ETL ツール。 |
| Slack | and roots | データ連携結果の通知先。 |
データフロー図(簡易)
データの取り込みから加工までの簡易的な流れです。
TROCCO
パラメータ設定
- ワークフロー設定のクエリを参考にしてください
- SQL で取り込み対象と、取り込みに必要な情報を抽出しています
スケジュール設定
データの更新頻度に合わせて設定しています。
- 毎月 25 日 ~ 31 日
- 毎週月曜日
Cloud Functions
README.mdに記述しています。
BigQuery
命名規則
Raw_[MultiTenant]_freee_[Stream]_[Table]
[MultiTenant]は、その会社全てに紐づくテナントを記述してください。
dbt
リネージ(簡易図)
詳細は dbt のソースコードを確認してください。
OpeningBalanceについて
- 開始残高を設定している会社のみ作成しています
- API がないので手動でデータを取得しています
- 開始残高の変更は基本的に起きないので、定期取得の必要はありません。
- データ取得方法はtools/README.mdを参考にしてください
エラー対応
データインジェスチョン
データへのアクセス権限がないとき(アカウントの変更)
- and roots 事業所の開発用アプリの Web 認証 URL に、対象事業所のアクセス権を持った freee アカウントからアクセスし認証コードを取得する
※ freee アカウントを経理部門に貸してもらう必要があります - 認証コードから refresh_token を取得する
※ 参考サイトの"トークンの取得方法"を参考にしてください - Stream テーブルにある、対象事業所の refresh_token を手動で更新する
- TROCCO を実行し、実行の可否を確認する
その他調査のポイント
- TROCCO と Cloud Functions のログからエラーの原因を探ってください
dbt
テナントが追加された時
テナントが追加されるとエラーを出すようにしています(テナント全部を会社に紐付ける設計なので)。
- エラーメッセージ:
not_null_Report_All_FreeeAccounting_fiscal_year_end - 対応:
- 対象会社のテーブル名(Raw)を変更
Raw_[MultiTenant]_freee_[Stream]_[Table]のMultiTenantに、追加されたテナント名を結合してください
- TenantStream テーブルにテナント分のレコードを insert
- SourceTable テーブルの対象レコードを update
- table_name カラムと、_TENANT_ID カラム
- dbt のファイルを追加・変更
- 対象会社のテーブル名(Raw)を変更
勘定科目名が変更された時
取得期間外の仕訳帳データの勘定科目名が変更されないので、テストでエラーを出すようにしています。
- エラーメッセージ:
dbt_utils_relationships_where_から始まるメッセージ - 対応
- エラーが出た会社を全期間取得してください
それ以外の場合の調査ポイント
- dbt の runs のログを確認してください
- OpeningBalance のデータや勘定科目名が正しいか確認してください
参考サイト
freee API