Slide 1

Slide 1 text

External Network Access よもやま話 © 2023 Chura DATA Inc.

Slide 2

Slide 2 text

⾃⼰紹介 © 2023 Chura DATA Inc. ちゅらデータ株式会社 シニアデータエンジニア 1974年12⽉12⽇⽣まれ(48歳) 現在、埼⽟県川越市在住(フルリモート勤務) • 2022年9⽉ちゅらデータ株式会社にJoin • Snowflakeやdbtが好き • 2023Snowflakeユーザーグループリーダーの⼀員 2

Slide 3

Slide 3 text

⾃⼰紹介 © 2023 Chura DATA Inc. ちゅらデータ株式会社 シニアデータエンジニア 1974年12⽉12⽇⽣まれ(48歳) 現在、埼⽟県川越市在住(フルリモート勤務) • 2022年9⽉ちゅらデータ株式会社にJoin • Snowflakeやdbtが好き • 2023Snowflakeユーザーグループリーダーの⼀員 • 先⽇のDCWTではサイロマンになりました 3

Slide 4

Slide 4 text

• External Network Accessとは • 以前の⽅式(External Function) • External Network Access vs External Function • External Network Accsss 使⽤シーン Agenda © 2023 Chura DATA Inc.

Slide 5

Slide 5 text

External Network Accessとは © 2023 Chura DATA Inc.

Slide 6

Slide 6 text

External Network Access For Snowparkとは ※2023年11⽉現在 © 2023 Chura DATA Inc. 6 • Snowfalke Summit 2023@LasVagasにて発表 • UDF/UDTFやストアドプロシージャで使える • 特定の外部ネットワークに対して、セキュアにアクセス • 構築はSnowflake内で完結 • 使⽤例 • 翻訳 • Slack通知 • リバースELT • Stramlit in Snowflakeデータアプリ • データ抽出(もできなくはない)

Slide 7

Slide 7 text

External Network Access の構築は簡単︕ © 2023 Chura DATA Inc. 7 • Snowflake側 1. Snowflake Secretsの設定 2. ネットワークルールの作成 3. External Access Integrationの作成 4. UDF/UDTF, ストアドプロシージャの処理の実装 5. 呼び出し • 外部API • 外部API関連の設定やAPI KEYの取得

Slide 8

Slide 8 text

• 変換系のAPI(翻訳など) • ⽐較的⼩さなマスターデータ系 • 抽出と取り込み(Federated Query) • データソース側がほぼ不変 • エラー制御等必要なら、専⾨のETLツールを • リバースETL External Network Accessの使い所 © 2023 Chura DATA Inc. 8

Slide 9

Slide 9 text

• ⼤きなデータはあまりおすすめできない • マイクロパーティションによる最適化やキャッシュは期待できない • Snowflake、外部API、通信コストも⾼くなる External Network Accessの制約︖ © 2023 Chura DATA Inc. 9

Slide 10

Slide 10 text

以前の⽅式(External Function) © 2023 Chura DATA Inc.

Slide 11

Slide 11 text

以前の⽅式(External Function) © 2023 Chura DATA Inc. 11 • Snowflake • 外部関数をSQLから • 外部 • プロキシサービスへ • リモートサービスへ転送 • 処理する(外部APIとか) • プロキシサービスへ • Snowflake • 結果を取得して表⽰

Slide 12

Slide 12 text

以前の⽅式(External Function)での構築は⼤変・・・・・・ © 2023 Chura DATA Inc. 12 • Snowflake側 • 外部関数の作成 • API INTEGRATIONの設定 • SECURITY INTEGRATIONの設定 • 外部(中間) • プロキシサービスの構築(API Gateway系のサービス) • リモートサービスの環境構築 • Cloud Functionsとか、EC2の構築とか、いずれか • 適切な権限設計・設定(IAM) • 適切なネットワーク設定(IP制限など) • リモートサービス側の処理の実装 • 外部API • 外部API関連の設定やAPI KEYの取得

Slide 13

Slide 13 text

以前の⽅式(External Function)での構築は⼤変・・・・・・ © 2023 Chura DATA Inc. 13 • Snowflake側 • 外部関数の作成 • API INTEGRATIONの設定 • SECURITY INTEGRATIONの設定 • 外部(中間) • プロキシサービスの構築(API Gateway系のサービス) • リモートサービスの環境構築 • Cloud Functionsとか、EC2の構築とか、いずれか • 適切な権限設計・設定(IAM) • 適切なネットワーク設定(IP制限など) • リモートサービス側の処理の実装 • 外部API • 外部API関連の設定やAPI KEYの取得 ここが⼤変!

Slide 14

Slide 14 text

External Network Accsss vs External Function © 2023 Chura DATA Inc.

Slide 15

Slide 15 text

External Network Access vs External Function⽅式 © 2023 Chura DATA Inc. 15 External Network Access External Function⽅式 構築 ◯ X Snowflakeでほぼ完結 プロキシサービス、リモートサービスを 外部で⽤意が必要 対応⽅式 ◯ △ UDF,ストアドプロシージャ UDFのみ 対応⾔語 ◯ ◎ Python、Scala、Java なんでもOK、⾃由度⾼し 応答サイズ ? △ (制限は⾒当たらず) バッチ最⼤10MB コスト ◯ △ Snowflake Warehouse データ転送 外部API使⽤料 Snowflake Warehouse データ転送 外部API使⽤料 プロクシサービス使⽤料 リモートサービス使⽤料 その他 データシェア未対応

Slide 16

Slide 16 text

External Network Accsss 使⽤シーン © 2023 Chura DATA Inc.

Slide 17

Slide 17 text

使⽤シーン Google Translate API (Snowflake Example) © 2023 Chura DATA Inc. 17 https://docs.snowflake.com/en/developer-guide/external- network-access/external-network-access-examples 実装するための⼿順あり、まずこれを参考に 本例は、Function的な使い⽅

Slide 18

Slide 18 text

使⽤シーン Slack通知 © 2023 Chura DATA Inc. 18 • メールでSlack通知することはできた • ⾒にくい︕表⽰が途中で切れる • SlackAPI⽅式だと、アラートの重要度で⾊分けも可能 • Waringなら⻩⾊ • Criticalなら⾚⾊ • 利⽤シーン • ストアドプロシージャ実⾏時に エラーが発⽣したら通知 • ⽇次レポートを通知

Slide 19

Slide 19 text

使⽤シーン dbt をキック © 2023 Chura DATA Inc. 19 • Snowpipeでデータを取り込んだ後、dbt起動させて、transferさせたくな いですか︖ • 複数のテーブル監視のTaskA, TaskB・・・・・ • ⼦TaskCで dbt APIをキック TaskA TableA取り込み TaskB TableB取り込み TaskC dbt API をKick! TaskRoot

Slide 20

Slide 20 text

使⽤シーン Snowflake External Network Access 〜Notion〜(truestar様) © 2023 Chura DATA Inc. 20 • SnowflakeUDFからNotionのテーブルに書き込み

Slide 21

Slide 21 text

使⽤シーン Federation Query on Bigquery (harryさん) © 2023 Chura DATA Inc. 21 • SnowflakeからBigQueryのデータを 取得 • 100万⾏超の2⾏データをBigQuery から取得するのに、Warehouseサイ ズXSで1分程度 • →通信サイズに制限なし︖︖ • ※外部関数はバッチあたりの最⼤応 答サイズが10MB

Slide 22

Slide 22 text

使⽤シーン ⾃然⾔語でSQLクエリを⽣成し、データアクセスを効率化 © 2023 Chura DATA Inc. 22 • DCWTにてDATUM STUDIOブースでデモ • Streamlit in SnowflakeとOpenAI APIを統合 • ⾃然⾔語でデータへ問い合わせ • 対話形式でデータが得られる

Slide 23

Slide 23 text

EOL © 2023 Chura DATA Inc. 23 ご清聴ありがとう ございました︕︕︕