---
title: 【dbt×Snowflake】External Network Accessによるデータロードをdbtで管理する
description: SnowflakeのExternal Network Accessによるデータロードをdbtのモデルで管理する。
image: https://knowledge.insight-lab.co.jp/hubfs/architecutre.png
---

[![BI-LAB_01](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/BI-LAB_01.png?width=800&height=220&name=BI-LAB_01.png) ![BI-LAB_01](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/BI-LAB_01.png?width=800&height=220&name=BI-LAB_01.png)](https://knowledge.insight-lab.co.jp/bi)

[![ご相談・お問い合わせ](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/interactive-160578501294.png)](https://knowledge.insight-lab.co.jp/hs/cta/wi/redirect?encryptedPayload=AVxigLJyqu5uE%2F2bMAXR009QNBvPQsKcPv1A184fuHcuhQW%2BPJEzZajM%2FRAzKZGkwseguC4lKOhpO9FarjtyEdLVEF5HbAlf9Vxw%2FFAGm%2BZTNrWkOQqf%2F40acldbDUceIMOh0lsbbOelRZw7lzH4TOKW6YhJQhQw1KpwcXKN8%2BKmj1Sd8mMqWKyWAgeY&webInteractiveContentId=160578501294&portalId=5935783)

<https://knowledge.insight-lab.co.jp/bi/-dbt-dataload-snowflake-external-network-access#tmpmodule_159469655889724>

- サービス紹介
    - [DATA-TERASU](https://service.insight-lab.co.jp/data-terasu)
    - [DATA-CONPASS](https://service.insight-lab.co.jp/data-conpass)
    - [Data Analytics Dojo](https://service.insight-lab.co.jp/data-DOJO)
- 取り扱い製品
    - [Snowflake](https://service.insight-lab.co.jp/snowflake)
    - [dbt](https://service.insight-lab.co.jp/dbt)
    - [TROCCO](https://service.insight-lab.co.jp/TROCCO)
    - [Qlik](https://service.insight-lab.co.jp/Qlik)
    - [Vizlib](https://service.insight-lab.co.jp/Vizlib)
    - [Sisense](https://service.insight-lab.co.jp/sisense)
    - [Tableau](https://service.insight-lab.co.jp/Tableau)
- [導入事例](https://solution.insight-lab.co.jp/bi/download-case-studies)
- [お役立ち資料](https://download.insight-lab.co.jp/bi/download)
- [ニュース](https://knowledge.insight-lab.co.jp/bi/tag/%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9)

###### 1 分で読むことができます。

# [【dbt×Snowflake】External Network Accessによるデータロードをdbtで管理する](https://knowledge.insight-lab.co.jp/bi/-dbt-dataload-snowflake-external-network-access)

 執筆者 [uta](https://knowledge.insight-lab.co.jp/bi/author/uta) 更新日時 2023年12月13日

###### Topics: [snowflake](https://knowledge.insight-lab.co.jp/bi/tag/snowflake) [dbt](https://knowledge.insight-lab.co.jp/bi/tag/dbt)

![【dbt×Snowflake】External Network Accessによるデータロードをdbtで管理する](https://knowledge.insight-lab.co.jp/hubfs/architecutre.png)

 目次

本記事は[dbt Advent Calendar 2023](http://qiita.com/advent-calendar/2023/dbt)の13日目の記事になります。

## はじめに

新卒からデータ分析基盤を管理を行ううちに、気づけばミニマリストになってしまいました。「いらないものは買わないor捨てる」「よく使うものはすぐに使えるようにしておく」が私生活に浸透しています。

本記事は、そんなミニマリストには嬉しい？「APIを用いたデータロードであれば、ELTをSnowflakeとdbtだけで完結できてしまうかも」という趣旨の内容になります。  
![architecutre](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/architecutre.png?width=842&height=338&name=architecutre.png)

 

## 背景

先日、Snowflakeで**External Network Access**（以降、ENA）という機能がパブリックプレビューになりました。詳細については、以前作成した記事を参考にしてください。  
[https://knowledge.insight-lab.co.jp/snowflake/-external\_access\_integration\_notion\_api](https://knowledge.insight-lab.co.jp/snowflake/-external_access_integration_notion_api)

ENAは、Snowflakeから外部APIでセキュアにアクセスすることができる機能です。利用できるAPIは幅広く、データロードからデータ送信、データ基盤と全く関係のないAPIですら実行することができます。

現在担当するプロジェクトで、このENAを用いたデータロードを行うパイプライン構築検証をしており、並行してdbtCloudの導入も進めています。

元々、Snowflakeのタスクで構築されたパイプラインに乗せる予定だったのですが、一部パイプラインがdbtCloudに移行されているため、どうせならdbtのパイプラインで実装する方針になりました。

 

## パイプライン構成（仮）

以前の記事で作成したUDFを例にNotion上のデータをロードするモデルを作成してみます。  
[https://knowledge.insight-lab.co.jp/snowflake/-external\_access\_integration\_notion\_api](https://knowledge.insight-lab.co.jp/snowflake/-external_access_integration_notion_api)

データ取得はUDFから返される半構造化データを`INSERT INTO`でテーブルに格納する形になるため、モデルのSELECT句には、データを格納するVARIANTと、ロードを実行した日と日時のカラムを最低限設定します。

また、実行の度にロードさせるため、materiaizedはincrementalとし、incremental\_strategyはappendで設定します。（データ量が多い場合は基準となるカラムで増分更新を）  
![load](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/load.png?width=1534&height=872&name=load.png)

これだけで、モデルが実行される度に外部ネットワークにアクセスし、取得したデータがRAWテーブルロードされます。  
![insert](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/insert.png?width=1687&height=414&name=insert.png)

 

後続モデルは適宜レイヤー構成に従って、variantデータの展開やデータクレンジングなどtransformを行うモデルを実装していきます。（余談ですが、NotionAPIから返されるJSON構成がまた変更されていたらしく、苦労して作ったJSON構造化用のオリジナルマクロがまた機能しなくなりました…。）

 

## モデルで管理するメリット

dbtの立ち場としてはデータ変換ツールなので、データロードはFivetranやtroccoなどのETLツールが必要になります。しかし、ENAによるロードであればETLツール不要でSnowflakeとdbtでELTが成り立ちます。

もちろんAPIで取得できないデータに関しては、ETLツールによるExtractが必要なので、完全にETLツール不要とはなりません。ただ、ELTがdbt上で完結すると、オーケストレーションが実質dbtのみで成立し、仮にロードでエラーが発生した場合、dbt retryの実行によってEからTまでのリカバリが一気通貫で行うことができます。

後述しますがdbtでUDFも管理できるので、データロード処理もモデルと同様にバージョン管理やテストができ、全体的にみても管理・運用は楽になりそうです。

 

## 課題

メリットがある反面、解決しなければいけない課題もいくつかあります。そのひとつがオブジェクトの管理です。ENAにはシークレット、ネットワークルール、外部アクセス統合、UDFの計4オブジェクトが必要になります。

先3つは変更頻度が低くかつ厳重に管理しなければいけないオブジェクトなので、Snowflake側で管理することになると思います。

UDFについても、Snowflake側で管理するものと考えていましたが、ちょうどアドベントカレンダーの[9日目の記事](https://syque.hatenadiary.jp/entry/create-python-udf-in-dbt-using-test-first-approach)に、dbtでUDFを管理する方法が共有されていました。（助かります...！）

UDFもSnowflakeで直接管理してしまうと、DWHとdbtの間で差分が生じてしまうリスクなどもありました。しかし、マクロで実装することで、ロードモデルのpre\_hookにUDF作成用のマクロを設定すれば、差分は生まれずテストやバージョン管理も行えるのでこの管理方法も試してみたいなと思います。

 

## おわりに

dbtCloud導入前は、dbtに対してリネージュが見れるツールというだけの印象でしたが、導入しつつある今では、dbtが無い世界は考えられないですし、別のプロジェクトにも導入したいと思えるほど強力なツールです。

そんなdbtも、次々と新しい機能をリリースしていますが、DWHの新しい機能によってさらに強化されることも同時に理解しました。

まだ手を出せていない「dbt Mesh」や「Semantic Layer」もうまく活用して、パイプラインを整理してデータ活用に頭を悩ませることができる環境を整えていきたいと思います。

BIツールを体験してみませんか？

INSIGHT LABでは、BIツールの無料紹介セミナー（動画）を配信しています。初めてBIツールをご利用される方を対象に、BIツールの概要や、複数あるBIツールの違いについて分かりやすくご説明いたします。

[![セミナー一覧はこちら](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/28023fdf-0a76-48bf-9815-43744ce7a2b2.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/28023fdf-0a76-48bf-9815-43744ce7a2b2)

- [Tweet](https://twitter.com/share)

![uta](https://knowledge.insight-lab.co.jp/hubfs/IMG_4095.jpg)

#### 執筆者 [uta](https://knowledge.insight-lab.co.jp/bi/author/uta)

野良猫を見かけると追わずにはいられません。

###### [前の投稿](https://knowledge.insight-lab.co.jp/bi/news/bdash-ebisumart-api)

[![「b→dash」と「ebisumart」がAPI連携](https://lh7-us.googleusercontent.com/6HHdd2fBXT9nxa70IFFvqaWsZgW-y5aHqS6HFGZsdlvNdzgb8WGtdgYOd89_1HzfdXW1gty8lMrJxKE8ip0yG6ws_mKU-jjTOywNrlVWgcZfSMkZojQerhlgLxk3o_VXei2rt1Karla6zKR9NyU6vsY)](https://knowledge.insight-lab.co.jp/bi/news/bdash-ebisumart-api)

###### [「b→dash」と「ebisumart」がAPI連携](https://knowledge.insight-lab.co.jp/bi/news/bdash-ebisumart-api)

###### [次の投稿](https://knowledge.insight-lab.co.jp/bi/news/reckoner-data-linkage-destination-distribution-mail-add)

[![「Reckoner」、データ連携先として「配配メール」を追加](https://lh7-us.googleusercontent.com/TG5riLSqdeMQG9iLEBcbZhuUU-9Cyf8Y72f1XTLwViugrImL5LqwrAJ1K8W35yqD46K6_NPr3DRHBSiFZQ7dR5iSCsHT5o-0T2auAiC9Y7kp9XTzDYlJIfnQqgjqHCWyuQ71rQ5N2OR_VImwzCKZTTg)](https://knowledge.insight-lab.co.jp/bi/news/reckoner-data-linkage-destination-distribution-mail-add)

###### [「Reckoner」、データ連携先として「配配メール」を追加](https://knowledge.insight-lab.co.jp/bi/news/reckoner-data-linkage-destination-distribution-mail-add)

 

## 最新記事

<https://knowledge.insight-lab.co.jp/bi/databricks-update-june>

###### 5 分で読むことができます。

#### [【2026年6月版】ビジネス視点で紐解くDatabricks最新機能！現場のデータ運用が劇的に楽になるポイント解説](https://knowledge.insight-lab.co.jp/bi/databricks-update-june)

###### 2026年 7月 5日

<https://knowledge.insight-lab.co.jp/bi/ai-reality-tour-tokyo-2026>

###### 2 分で読むことができます。

#### [AI Reality Tour Tokyo 2026にブース出展いたします！](https://knowledge.insight-lab.co.jp/bi/ai-reality-tour-tokyo-2026)

###### 2026年 6月 8日

<https://knowledge.insight-lab.co.jp/bi/semantic-layer-game-kpi>

###### 7 分で読むことができます。

#### [ゲーム運営でのデータ分析を次のステージへ。KPI共通化と定義管理の効率化を実現する「セマンティックレイヤー」の重要性](https://knowledge.insight-lab.co.jp/bi/semantic-layer-game-kpi)

###### 2026年 5月 29日

##### サービス

サービス

- [DATA-CONPASS](https://service.insight-lab.co.jp/data-conpass)
- [DATA-TERASU](https://service.insight-lab.co.jp/data-terasu)
- [DATA-ANALYTICS-DOJO](https://service.insight-lab.co.jp/data-analytics-dojo)
- [Data Knowledge Library](https://knowledge.insight-lab.co.jp/)
- [セミナーアーカイブ](https://download.insight-lab.co.jp/seminar-archive)

##### データ活用ツール

データ活用ツール

- [Snowflake](https://service.insight-lab.co.jp/snowflake)
- [dbt](https://service.insight-lab.co.jp/dbt)
- [TROCCO](https://service.insight-lab.co.jp/TROCCO)
- [Qlik](https://service.insight-lab.co.jp/Qlik)
- [Vizlib](https://service.insight-lab.co.jp/Vizlib)
- [Sisense](https://service.insight-lab.co.jp/sisense)
- [Tableau](https://service.insight-lab.co.jp/Tableau)

##### 実績・事例

実績・事例

- [トヨタ自動車北海道](https://download.insight-lab.co.jp/bi/case-studies/toyota)
- [テレビ東京コミュニケーションズ](https://download.insight-lab.co.jp/bi/case-studies/tv-tokyo)
- [プラントフォーム](https://download.insight-lab.co.jp/bi/case-studies/plantform)
- [スタイルブレッド](https://download.insight-lab.co.jp/ja/bi/case-studies/style-bread)
- [協和企画](https://download.insight-lab.co.jp/bi/case-studies/kk)
- [Jマテ．カッパープロダクツ](https://listen-web.com/story/isao-tooyama2/)

##### 運営会社

運営会社

- [会社概要](https://insight-lab.co.jp/about/)
- [サイト運営責任者](https://twitter.com/Kajiwara81)
- [お問い合わせ](https://contact.insight-lab.co.jp/main)

[![Logo_yoko_C+W-1](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Logo_yoko_C+W-1.png?width=500&height=133&name=Logo_yoko_C+W-1.png "Logo_yoko_C+W-1")](https://www.insight-lab.co.jp/)

- [個人情報保護方針/個人情報の取り扱いについて](https://insight-lab.co.jp/privacy/)

Copyright © ＩＮＳＩＧＨＴ ＬＡＢ, Inc．All Rights Reserved.

<https://twitter.com/INSIGHTLAB_INC><https://www.youtube.com/channel/UCOKNKiO4uuza4NioSZpBMhg/featured>

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "uta",
    "url" : "https://knowledge.insight-lab.co.jp/bi/author/uta"
  },
  "dateModified" : "2023-12-13T03:30:00.541Z",
  "datePublished" : "2023-12-13T03:30:00.000Z",
  "headline" : "【dbt×Snowflake】External Network Accessによるデータロードをdbtで管理する",
  "image" : [ "https://knowledge.insight-lab.co.jp/hubfs/architecutre.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://knowledge.insight-lab.co.jp/bi/-dbt-dataload-snowflake-external-network-access",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://knowledge.insight-lab.co.jp/hubfs/Logo_tate-2.png"
    },
    "name" : "INSIGHT LAB"
  }
}
```