---
title: Digdagを使ってSnowflakeでクエリを実行してみた
description: Digdagのプラグインを使ってSnowflakeを触ってみます！
---

[Snowflake Knowledge - INSIGHT LAB](https://knowledge.insight-lab.co.jp/snowflake)

# [Digdagを使ってSnowflakeでクエリを実行してみた](https://knowledge.insight-lab.co.jp/snowflake/digdag-snowflake)

 作成者: [BI LAB編集室](https://knowledge.insight-lab.co.jp/snowflake/author/bi-lab)｜2021年12月16日

この記事は[Snowflake Advent Calendar 2021](https://adventar.org/calendars/6220)の16日目の記事になります！

こんにちは！最近親知らずを抜いたLeonです！

虫歯治療ってことで歯医者にいったところとりあえず抜いちゃいます？って軽い感じで聞かれそのまま抜いてしまいました。  
抜歯後は多少出血しましたがそれほど痛みもなく腫れも無く治っていってるようで恵まれてるようです。。。よかった。。。

一生モノの歯は大事にしていきたいですね…

ということでタイトルにもある通り、今回は有名なワークフローエンジンDigdagでSnowflakeを扱うサードパーティプラグインがあり気になったので触ってみたいと思います！

## Digdagとは？

TreasureData社がオープンソースソフトウェアとして公開しているワークフローエンジンで複雑なデータパイプラインを構築・実行・スケジュール・管理がしやすいツールになっています。

yamlで処理をシンプルに記載できるので慣れていない方も取っつきやすく、  
Python/Rubyも対応しているのでそちらに慣れている方も扱いやすいかと思います。

定番なワークフローエンジンの一つであり具体的な内容については色んな方々が記事にされていると思いますので今回は省きます。  
是非気になる方はググってみてください！  
[公式サイトはこちら！](https://www.digdag.io/)

## プラグインを触る

それではDigdagを使ってSnowflakeに繋いでみます！  
Digdagを試してみたい方は[Getting started](http://docs.digdag.io/getting_started.html)を参考にインストールしてお試しください。

早速設定を作成していくのですが  
DigdagでSnowflakeに接続する場合公式のオペレータが存在しておりません。。。

ですがサードパーティプラグインとして有志の方々が開発されております！  
[digdag\_operator\_snowflake](https://github.com/flinters/digdag_operator_snowflake)  
作成された皆様、素晴らしいプラグインをありがとうございます！

### シークレット設定

まずは接続するためにパスワード情報のsecretsを設定します。  
secretsについては以下を参照してください。  
[https://docs.digdag.io/command\_reference.html#secrets](https://docs.digdag.io/command_reference.html#secrets)  
secretsはコマンドラインから設定します。  
今回はお試しなのでローカルシークレットで試します。

```
digdag secrets --local --set snow.password
```

こちらにはSnowflakeにログインする際のパスワードを入力しましょう。

入力できたら以下のコマンドでセットされたか確認します。

```
digdag secrets --local
```

snow.passwordが表示されていればOKです。

### digファイル作成

続いてdigファイルの中身を作ります。  
サンプルとしてテスト用のSQLファイルを実行させることにします。

```
_export:
  plugin:
    repositories:
      - https://jitpack.io
    dependencies:
      - com.github.flinters:digdag_operator_snowflake:v0.1.3
  snow:
    host: xxxxxxx.ap-northeast-1.aws.snowflakecomputing.com
    user: xxxxx
    warehouse: DEMO_WH

+run_task:
  snow>: test.sql
```

内容を見ていきましょう。

host：  
Snowflakeにアクセスする際のURLを見ていただければ例のような部分があると思います  
詳細→[https://docs.snowflake.com/ja/user-guide/organizations-connect.html](https://docs.snowflake.com/ja/user-guide/organizations-connect.html)

user：  
ログインする際のユーザー名

warehouse：  
クエリを実行する際に利用するウェアハウス

Snowflakeの接続設定はこれでOKです。

### クエリ作成・実行

run\_taskにはtest.sqlを指定し、同じディレクトリにtest.sqlを作成しましょう。  
今回は以下の簡単なクエリを記載します。

```
SELECT
    123234 as test
```

これでOKです！

それではコマンドでdigdag runをしましょう！

```
digdag run -a snowflake.dig
```

Successになりました！

Snowflake側の履歴を見ると…

実行できてます！！楽ちんです！！

## パラメーターを確認してみる

簡単にクエリ作って実行してみましたが他にも様々なパラメーターが用意されているので  
実際に触って確認してみます！

### create\_table

こちらは実行されたクエリの結果でテーブルを作成するパラメーターです。  
実行する際は作成先情報をdatabaseパラメーターとschemaパラメーターに記載し、  
テーブル名をcreate\_tableに記載します。

実行したところちゃんとテーブルが作成されていました！

### create\_or\_replace\_table

こちらはその名の通りテーブルがない場合は作成、存在する場合は置き換えをするパラメーターです。  
クエリの内容を変えて実行してみましょう。

CREATE OR REPLACE TABLEで実行され…

テーブルも想定通りの内容になっていました！

### create\_table\_if\_not\_exists

こちらは存在しない場合にテーブルを作成するパラメーターです。  
まずは上で作成したテーブルと同じテーブル名で実行してみます。

当然ですが存在しているので作成されません。

次にテーブル名を変えて実行してみます。

作成されました！

### insert\_into

こちらはテーブルにクエリ結果を挿入するパラメーターです。早速実行してみます。

対象テーブルにレコードが追加されていました！

### session\_unixtime\_sql\_variable\_name

Digdagのsession\_unixtimeを格納する変数名です。  
こちらのパラメーターはexportのsnow:に設定するパラメーターなので注意が必要です。

変数はクエリ側に\[$変数名\]と記載することで利用できます。

テーブル作成を実行してみます。

session\_timeが格納されました！

### 変数を使う

パラメーターとは違いますがもちろんDigdagなので変数も使えます。  
試しにクエリに組み込み変数であるsession\_dateを使ってカラムを作ってみます。

無事日付も取れました！

## まとめ

簡単にですがDigdagのSnowflakeプラグインを紹介させていただきました！  
他にも[Snowflake Advent Calendar 2021](https://adventar.org/calendars/6220)ではAirflowなどのワークフローエンジンを使った記事や  
その他Snowflakeのとても参考になる情報がたくさん紹介されています。  
気になる方は是非確認してみてください！

気づけば12月も半ばですね。  
皆様、良いお年を～！

[完全な記事を表示](https://knowledge.insight-lab.co.jp/snowflake/digdag-snowflake)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "BI LAB編集室"
  },
  "dateModified" : "2021-12-16T02:17:45.504Z",
  "datePublished" : "2021-12-16T02:17:45Z",
  "headline" : "Digdagを使ってSnowflakeでクエリを実行してみた",
  "image" : {
    "@type" : "ImageObject",
    "height" : 425,
    "url" : "https://download.insight-lab.co.jp/hubfs/Snowflake-Logo-1.png",
    "width" : 1168
  },
  "mainEntityOfPage" : "https://knowledge.insight-lab.co.jp/snowflake/digdag-snowflake",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "snowflakeナレッジ"
  }
}
```