未分類
AZN だけ「No data」になる原因(2025-12-14)
結論
AZN はEAC(Actuals and Consensus)データ自体は取得・保存できている一方で、出力/判定側のスクリプトが参照しているのが**financial_data_annual / financial_data_quarterly(= v_annual_data)のみのため、AZN が「No data」扱い**になっています。
つまり「取得に失敗した」のではなく、**参照テーブルの不一致(EAC と Financial の別系統)**が原因です。
事象
- TSV は存在する
C:\Users\numbe\Downloads\actual-and-consensus\2025-12-14\AZN_EAC_20251214.tsv(サイズ: 40458 bytes)
- DB に companies は登録済み
companies:AZNが存在(company_id=102)
- しかし Financial 系テーブルが空
financial_data_annual/financial_data_quarterlyに AZN の行が 0
- 一方、EAC 系テーブルは埋まっている
eac_annualに 1078 行eac_quarterlyに 4851 行
直接確認(このリポジトリ内のDB)
※ メモで言及されていた apps/web/data/koyfin.db はこの環境では存在せず、実体は scraper/data/koyfin.db でした。
scraper/data/koyfin.db で確認した値:
companies (AZN):[(102, 'AZN')]financial_data_annual (AZN):0financial_data_quarterly (AZN):0eac_annual (AZN):1078eac_quarterly (AZN):4851v_annual_data (AZN):0v_eac_annual (AZN):1078v_eac_annualの例(Sales-Adjusted):FY 2015A = 24,708,FY 2016A = 23,002, ...
参考(他銘柄は Financial が入っている例):
MSFT financial_data_annual:3012(v_annual_dataも3012)
なぜ AZN だけこうなるのか(推測を含む)
- EACのインポートは
eac_*に入る(今回 AZN は入っている) - 一方で Financial(ハイライト/PL/BS/CF等)のインポートが AZN だけ走っていない/元TSVが無い/対象外になっている可能性が高い
- その結果、
financial_data_annualが空のまま
- その結果、
- 出力/判定側が
v_annual_data(= financial_data_annual ベース)しか見ない設計だと、AZN は常に「No data」になる
対処案
A. AZN の Financial データをインポートする(王道)
- AZN の財務TSV(EACではない方)を
financial_data_annual(必要ならfinancial_data_quarterly)へ取り込む - 取り込み後、出力/判定は
v_annual_data経由で自然に通る
B. 出力/判定スクリプト側にフォールバックを入れる(最小改修)
v_annual_dataが 0 件のときだけv_eac_annual(必要ならv_eac_quarterly)も参照する- ただし Financial と EAC は 指標体系が別物なので、出したい指標が EAC 側に存在するか(名称/単位)を合わせる必要あり
C. 出力側で AZN を除外する(運用で回避・当面の方針)
- 方針: DBからAZNは削除しない(EACは取得できており、Financialが取れた時に整合させられるため)
- 出力/判定(
v_annual_data前提の処理)では、Financialが未取得の銘柄が混ざると「No data」扱いでノイズになるため、当面は 出力側で AZN を除外する- 例:
WHERE ticker <> 'AZN'を追加、または「v_annual_dataの行数が0の銘柄はスキップ」など
- 例:
- Financial側の取得(TSVダウンロード/インポート)が成功したタイミングで、この除外は解除する
いまのDBのままだとどうなるか
financial_data_annualが空のままなので、v_annual_dataを参照する処理からは AZN が「No data」判定され、出力されません。