Skip to content

saturnnode/snowflake-java-sample-integration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snowflake Agent プロジェクト README

概要

このプロジェクトは、Snowflakeデータベースと連携するJavaプログラム群です。各Javaファイルは独立した処理を担当し、ETL・データ変換・ビュー管理・バッチ処理などを実現します。

構成

Javaファイル一覧

1. InitSnowflakeSchema.java

  • 概要: Snowflakeのスキーマ・テーブル・Dynamic Table(DT_RECENT_PURCHASES)を初期化・自動作成します。
  • 機能:
    • 指定したデータベース・スキーマの作成(存在しない場合)
    • 必要なテーブル(CUSTOMER_JP, PRODUCT_MASTER, JOB_LOG)の作成
    • Dynamic Table(DT_RECENT_PURCHASES)の自動作成
  • 実行方法: scripts/init_snowflake_schema.sh を実行します。

2. SnowflakeAgent.java

  • 概要: TEST_TABLE の作成、データ挿入、およびCSVファイル(../src/csv/data.csv)からのデータ追加を行います。
  • 機能:
    • TEST_TABLE が存在しない場合は作成します。
    • ../src/csv/data.csv に含まれるデータをテーブルに挿入します。
    • テーブルの内容を表示します。
  • 実行方法: scripts/run_agent.sh を実行します。

3. EncodingConverter.java

  • 概要: CSVファイル(Shift_JIS→UTF-8)の文字コードを変換し、変換後のCSVデータをSnowflakeの CUSTOMER_JP テーブルにJDBC経由でINSERTします。
  • 機能:
    • 指定されたCSVファイルの文字コードをShift_JISからUTF-8に変換します。
    • 変換されたデータを CUSTOMER_JP テーブルに挿入します。
  • 実行方法: scripts/run_encoding_converter.sh を実行します。

4. SnowflakeBatchTest.java

  • 概要: CUSTOMER_JP テーブルへテストデータ(101件)を追加し、ストアドプロシージャ SP_PURGE_IF_OVERLOAD を実行し、ジョブログへの記録、Dynamic Table DT_RECENT_PURCHASES の内容・更新履歴の表示、および終了コードでJP1連携対応を行います。
  • 機能:
    • CUSTOMER_JP テーブルに101件のテストデータを挿入します。
    • ストアドプロシージャ SP_PURGE_IF_OVERLOAD を実行します。
    • 実行結果をジョブログ(JOB_LOGテーブル)に記録します。
    • Dynamic Table DT_RECENT_PURCHASES の内容と更新履歴を表示します。
    • ストアドプロシージャの結果に応じてJP1連携用の終了コードを出力します(削除実行:0、案件未達:1、エラー:2)。
  • 実行方法: scripts/run_batch_test.sh を実行します。

5. SnowflakeViewManager.java

  • 概要: 顧客・商品データの各種ビュー(集計・整形・JOIN・多言語変換など)を作成し、作成したビューの内容をカラム名付きで表示します。
  • 機能:
    • 商品マスタテーブル(PRODUCT_MASTER)を作成・データ挿入します。
    • 顧客データを整形するビュー(VW_CUSTOMER_FORMATTED)を作成します。
    • 商品別の購入件数を集計するビュー(VW_PRODUCT_STATS)を作成します。
    • 東京都在住の顧客のみを抽出するビュー(VW_CUSTOMER_TOKYO)を作成します。
    • 顧客と商品マスタを結合したビュー(VW_CUSTOMER_WITH_PRODUCT)を作成します。
    • 商品名を英語に変換する多言語対応ビュー(VW_CUSTOMER_LANG)を作成します。
    • 作成したビューの内容をカラム名付きで表示します。
  • 実行方法: scripts/run_view_manager.sh を実行します。

6. BulkDataLoader.java

  • 概要: CSVファイル(src/csv/data.csv)からデータを読み込み、Snowflakeの TEST_TABLE にPreparedStatementで挿入します。
  • 実行方法: scripts/run_bulk_loader.sh を実行します。

7. BulkMySQLLoader.java

  • 概要: MySQLの CUSTOMER_MYSQL テーブルからデータを取得し、Snowflakeの CUSTOMER_JP テーブルへバルクロードします。
  • 実行方法: scripts/run_bulk_mysql_loader.sh を実行します。
  • 必要な環境変数例(scripts/env.sh):
    export MYSQL_URL="jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Tokyo"
    export MYSQL_USER="root"
    export MYSQL_PASSWORD="root"
    

CSVファイルの役割

  • src/csv/data.csv: TEST_TABLE用のサンプルデータ
  • src/csv/customer_sjis.csv: Shift_JISエンコーディングのサンプル
  • src/csv/customer_utf8.csv: UTF-8変換後のサンプル

Dynamic Table

  • InitSnowflakeSchema.javaDT_RECENT_PURCHASES を自動作成

進捗・今後の展開について

snowflake_full_project_example.md に記載の「Snowflakeフル機能活用データ統合&分析基盤」プロジェクトは、 現状「データ連携・ETL(CSV/MySQL→Snowflake)」まで実装・検証済みです。 以降の機能(DDL自動化、セキュリティ、API連携など)は今後の拡張予定です。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published