[分析準備の解説] 第4回金融データ活用チャレンジ - Snowflake データ準備編
(金融庁共催)第4回金融データ活用チャレンジのデータを分析できるようにSnowflakeへアップロードする方法を説明します。
0. データ準備
まずは SIGNATE さんのコンペティションページからデータをダウンロードしてください。
0-1. financial_data.csv のヘッダーを英文字に変更
financial_data.csv のヘッダーが日本語だと思いますが、Snowflake に読み込んだあとに日本語のままだと SQL など手間がかかると思いますので、こちらに変更するヘッダーを記載しておきます。
下記の 1 行を financial_data.csv の 1 行目と置換してください。
code,headquarters_location,market_segment,employees_consolidated,capital_100m_yen,industry_category,year,revenue,operating_income,ordinary_income,net_income,total_assets,net_assets,operating_cash_flow,investing_cash_flow,financing_cash_flow,cash_and_equivalents_end,noncurrent_liab_retirement_benefit,non_operating_income,income_taxes,investments_deferred_tax_assets,ppe_machinery_and_vehicles,noncurrent_liab_asset_retirement,current_assets_merchandise,fixed_assets,ppe_lease_assets,noncurrent_liab_long_term_loans,current_assets,current_assets_cash_and_deposits,noncurrent_liab_bonds,ppe_buildings_and_structures,ppe_accumulated_depreciation,ppe,income_before_taxes,noncurrent_liabilities,sga_advertising,sga_depreciation,current_liab_advances_received,current_liab_income_taxes_payable,cost_of_sales_completed_work,current_liab_construction_payables,current_assets_completed_work_receivables,current_liab_bonus_provision,liabilities,revenue_merchandise,sga_expenses,current_assets_notes_and_accounts_receivable,sga_taxes_and_dues,current_liab_short_term_loans,revenue_completed_construction,current_assets_real_estate_for_sale,current_liab_notes_and_accounts_payable,extraordinary_income,net_assets_non_controlling_interests,cost_of_sales_real_estate,intangible_assets,sga_research_and_development,ppe_land,current_assets_short_term_securities,gross_profit_completed_construction,cost_of_sales,sga_rent,noncurrent_liab_lease_obligations,current_assets_construction_in_progress,current_liab_warranty_provision,current_liab_long_term_loans_due_within_year,ppe_construction_in_progress,ppe_tools_and_equipment,net_assets_treasury_stock,revenue_real_estate,other_unclassified,net_assets_retained_earnings,extraordinary_loss,intangible_assets_software,gross_profit,current_assets_raw_materials,current_liabilities,intangible_assets_goodwill,investments_securities,investments_long_term_loans,net_assets_capital_surplus,investments_real_estate,non_operating_expenses,net_assets_accumulated_oci,sga_personnel_expenses,current_liab_construction_loss_provision,investments_and_other_assets,cost_of_sales_merchandise,sga_other,noncurrent_liab_other,net_assets_capital_stock,current_assets_allowance_doubtful_accounts
置換すると下記のようになります(置換後の一部のデータのスクリーンショット)。

こちらを使って、CSV データを Snowflake に取り込みたいと思います。
1. CSVのデータアップロード
まずは financial_data.csv をアップロードします。
1-1. Snowflake アカウントの準備
Snowflake アカウントをご用意してください。コンペティション参加者の方は、トライアルアカウント作成のご案内を記載しておりますのでご確認ください。
1-2. Snowflake へアップロード
Snowflake の TOP ページにローカルファイルをアップロードと記載がありますのでこちらをクリックします。

クリック後、データをアップロードというのがでてきます。こちらからファイルをアップロードできます。financial_data.csv をドラッグアンドドロップ、もしくは閲覧からファイルを指定してアップロードしてください。

すると下記のようにファイルがアップロードされていると思います。

このファイルをどこに配置するかデータベースを指定するため、”+データベース”のボタンをおします。

データベースの指定をする必要があるので、これは任意の名前でかまわないのですが、ここでは DB_FDUA_4TH_COMP としておきます(画面上はすでに DB_FDUA_4TH_COMP を作ってしまったため、DB_FDUA_4TH_COMP_2 とします)

作成をクリックし、”新しいテーブルを作成”を選んだまま、データをいれるテーブル名をきめます。ここでは ”FINANCIAL_DATA” としておきます。

終わりました、次へをおすとファイルの確認に進みます。
次へをおすとカラムの確認に移ります。デフォルトの日本語のカラムでも""をくくることでデータをいれることはできますが、のちほど分析時に毎度日本語をいれると手間がかかると思いますので、こちらの英字/アルファベットにしております。

こちらでロードをするとこれでファイルを Snowflake にいれることができました。

実際のデータを見てみましょう。テーブルから SQL を生成を選んでください。
すると、SQL ファイルの画面がでてきます。ここで SQL を記載、実行ができます。

サンプルに記載の SQL は LIMIT 10 が指定されており、10 行しかでませんのでご注意ください。これを実行すると画面下部に結果が返ってきて中身が確認できます。無事データが入っていることが確認できました。
2. PDF ファイルのアップロード
PDF ファイルをアップロードして読み込めるようにします。
左のタブから円柱のデータベースのアイコンをマウスオーバーして"データベースエクスプローラー"をクリックします

すると、下記のような画面になります。ここでさきほど作った"DB_FDUA_4TH_COMP"を確認できます。

左の DB_FDUA_4TH_COMP をクリックし、PUBLIC をクリックするとこのような画面になります。

PUBLIC 内のデータを確認できるので次はステージ環境を作ります。このステージ環境に PDF ファイルをアップロードします。右上の作成をおし、ステージをマウスオーバーし、"Snowflakeによる管理"を選択します。


ステージ作成画面になりますので、
- ステージ名:FDUA_PDF (他の名前でも可能)
- データベースとスキーマ:そのまま
- コメント:任意の文字。なくても可能
- ディレクトリテーブス:チェックのまま
- 暗号化:サーバー側の暗号化をチェック
の設定で下記のようになります。

これで作成をおすとステージができます。
左の PUBLIC の中に新しくステージが作られ、下に "FDUA_PDF" が作られましたのでこちらをクリックします。

右上に青い”+ファイル”をおします。すると、さきほどのファイルアップロードと同じような表示がでますのでここですべての PDF ファイルを選択肢、ドラッグアンドドロップで配置します。

アップロードをおすと PDF が Snowflake に取り込まれます。

左のエディターアイコンをマウスオーバーして、”ワークスペース”をクリックしてください。

するとさきほど SQL を実行していたワークスペースに移動することができます。
3. PDF データをテーブルに格納する
Snowflake は PDF をテキストデータとして取り込む関数を用意しております。PDF のフォーマットはさまざまなので 100% 意図した形に取り込めるわけではありませんが、一度テキストにすることで Cortex 検索による検索や Cortex AI 関数による加工などに使えますので、本説明では AI_PARSE_DOCUMENT のサンプルを共有させていただき、ここからの改善はコンペ参加者の方に譲りたいと思います。
また、AI_PARSE_DOCUMENT を実行するために、1つ設定が必要ですので下記の実行をお願いします。2026/1/29現在、AI_PARSE_DOCUMENT はクロスリージョン推論を使うことですべてのリージョンのアカウントで使えます。詳細は下記ドキュメントをご覧ください。
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'AWS_US';
AI_PARSE_DOCUMENTのドキュメンテトはこちらになります。
それをもちいたサンプル SQL はこちらです。1 つのファイルごとに実施する場合は下記で、ディレクトリごと変換した場合は、その下に記載した SQL を実行してください。
SELECT
RELATIVE_PATH AS file_name,
AI_PARSE_DOCUMENT(
TO_FILE('@DB_FDUA_4TH_COMP.PUBLIC.FDUA_PDF', '有価証券報告書(12044).pdf'),
{'mode': 'LAYOUT'}):content::VARCHAR AS content
;
複数の PDF ファイルを一度に変換して、テーブルに保存する場合は下記 SQL を実行してください
CREATE OR REPLACE TABLE DB_FDUA_4TH_COMP.PUBLIC.EXTRACTED_PDFS AS
(
SELECT
RELATIVE_PATH AS file_name,
AI_PARSE_DOCUMENT(
@DB_FDUA_4TH_COMP.PUBLIC.FDUA_PDF,
RELATIVE_PATH,
{'mode': 'LAYOUT'}
):content::VARCHAR AS content
FROM
DIRECTORY(@DB_FDUA_4TH_COMP.PUBLIC.FDUA_PDF)
)
;
さきほど PDF を配置したステージ環境はディレクトリ構成にしておりますので、複数ファイルを扱うために、DIRECTORY が使えるようになっております。最後の SQL を実行すると、DB_FDUA_4TH_COMP.PUBLIC.EXTRACTED_PDFS にデータが格納されます。
このままだと扱いづらい場合は、page ごとに OCR をしたり、現状のデータを Cortex 検索にいれたり、あるいは Cortex AI 関数を使って、LLM 分析させたりできますので、ぜひここからご自身でなにをしたいか考えながら実施していただければと思います。
4. おわりに
いかがでしたでしょうか?こちらはデータ準備編ということもあり、CSV ファイル、PDF ファイルを取り込み分析できるところまでご案内しました。Snowflake 勉強会で登壇するナウキャストさんからもさらなる発展版のブログも公開されていますのでよかったら下記ブログをご覧ください。
ナウキャスト Takumi-san によるSnowflake Intelligenceで実現するデータ分析レポート執筆の自動化(第4回金融データ活用チャレンジ)はこちらです!
Discussion