Snowflake データベースを統合する
Snowflake データベースを接続して、Squid のリアルタイムストリーミング、堅牢なクエリ、AI 機能を活用しましょう。
TL;DR
このチュートリアルでは、新しい Snowflake データベースを Squid プロジェクトに接続する方法を学びます。内容は次のとおりです。
- Squid Console で統合(integration)を作成する
- 外部データベースのセキュリティルールを適用する
- クライアントプロジェクトから Squid を使って Snowflake データベースをクエリする
このチュートリアルでは、React と Squid を使用して Snowflake テーブル内のサンプルデータに接続します。データベース用語、React、Squid プラットフォームについての基本的な理解があると役立ちますが、このガイドに前提条件はありません。
環境セットアップ
- In the Squid Console, switch to the
devenvironment.

Download the snowflake code sample using the following command. Replace the placeholders with the values from your Squid application as shown in the console.
npx @squidcloud/cli init-sample snowflake --template snowflake --appId YOUR_SQUID_APP_ID --apiKey YOUR_SQUID_API_KEY --environmentId dev --squidDeveloperId YOUR_SQUID_DEVELOPER_ID --region YOUR_REGION
You can find your environment variables under: 'Application' -> 'Show env vars' as seen below:

- Open the project in the IDE of your choice.
- Start the app locally by running the following command in the project folder:
npm run start
- To view the app, navigate to localhost:PORT, where PORT is logged in the terminal. The address will likely be
http://localhost:5173.
新しい Snowflake データベースを作成する
Snowflake はアカウント作成時にいくつかの共有データベースを提供します。これらのデータベースは読み取り専用なので、編集できるコピーを作成します。
Snowflake console で Snowflake Worksheet に移動して開きます。Worksheet で Run all オプションを使用して次のコマンドを実行します。<your_wh> をデータウェアハウス名に置き換えてください。
USE WAREHOUSE <your_wh>;
CREATE DATABASE SQUID_TUTORIAL;
CREATE TABLE SQUID_TUTORIAL.PUBLIC.ORDERS LIKE "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."ORDERS";
INSERT INTO SQUID_TUTORIAL.PUBLIC.ORDERS SELECT * FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1"."ORDERS";
これらのコマンドは新しいデータベースを作成し、サンプルテーブルの 1 つからデータを新しいデータベースにインポートします。
Snowflake を Squid に接続する
- Integrations タブをクリックし、Available integrations をクリックしてすべての統合を表示します。
- Snowflake integration を選択します。
- 次の設定情報を入力します。
フィールドは大文字・小文字を区別します。必要に応じて大文字を使用していることを確認してください。
-
Integration ID: snowflake-shop
-
Snowflake username
-
Snowflake password - 非公開にするため、パスワードは Squid Secrets に保存してください。
-
Snowflake account ID - Snowflake console で、右上のユーザー名が表示されているコーナーのメニューを開き、メニューから Account をクリックします。アカウントにホバーするとモーダルが表示され、アカウント情報の詳細を表示するオプションが出ます。Snowflake の Copy account identifier ボタンを使用して ID をコピーできます。Squid Console ではこの ID を貼り付け、. を - に置き換えて、次のようにします: Before: AAAAAAA.AAA00000 After: AAAAAAA-AAA00000
-
Snowflake database name: SQUID_TUTORIAL
-
Snowflake schema: PUBLIC
-
Snowflake warehouse - 前の手順でデータベースを作成したときと同じ warehouse を使用します。
-
Snowflake role - Snowflake データベースが存在する role 名です。Snowflake role は Snowflake console の Snowflake username の配下で確認できます。
接続情報を入力したら、Test connection をクリックして接続が成功することを確認します。
-
Add integration をクリックして統合を追加します。
-
スキーマは Snowflake から Squid に自動的に同期されます。各 collection には、collection(table)内の個々の document(row)を識別するための primary key が必要です。
-
Squid Console のスキーマプレビューで ORDERS collection を開き、O_ORDERKEY 行の ... ボタンをクリックして Edit field を選択します。

- Primary key の下で、ドロップダウンメニューから Yes を選択します。

- Save schema をクリックして検出されたスキーマを保存します。
セキュリティルール
セキュリティルールは、すべての database integrations で必須です。これにより、特定の collection や action、またはデータベース全体へのアクセスを認可するためのカスタムロジックを作成できます。認証(authentication)と認可(authorization)はこのチュートリアルの範囲外のため、バックエンドコードには snowflake integration へのパブリックアクセスを許可するセキュリティルールが含まれています。
データを安全に保護する方法について詳しくは、Squid バックエンドの security rules をお読みください。
セキュリティルールはファイル backend/src/service/example-service.ts にあります。SquidService クラスにデコレーターを追加することで、セキュリティルールを拡張できます。database integration 用のセキュリティルールを作成するには、データベース action の type と INTEGRATION_ID をパラメータとして受け取る @secureDatabase デコレーターを使用します。現在のセキュリティルールは ExampleService クラスで確認できます。
export class ExampleService extends SquidService {
@secureDatabase('all', 'snowflake-shop')
allowAllAccessToSnowflakeDb(): boolean {
return true;
}
}
アプリをローカルで実行する
- Start the Squid backend locally using the following command in the terminal opened to your app's backend:
squid start
- Start the frontend using the following command in the terminal opened to your app's frontend:
npm run dev
- To view the app, navigate to localhost:PORT where PORT is logged in the terminal. The address will likely be
http://localhost:5173.
アプリの機能を確認する
- クエリに一致するすべての document を、フロントエンドに表示されるテーブルで確認できます。次の Squid hooks がデータを読み取り、それを
DisplayOrdersコンポーネントが表示します。
const ordersCollection = useCollection<Order>('ORDERS','snowflake-shop');
const { data } = useQuery(ordersCollection.query().eq('O_CUSTKEY',121361).dereference());
...
return (
<div>
<h1>Orders</h1>
{data && <DisplayOrders orders={data} />}
<AddOrder />
</div>
);
- Add order をクリックすると、新しい order がランダムに生成され、データベースに追加されます。この order がリアルタイムでビューに表示されることに注目してください。Squid により、Snowflake データベースとのリアルタイム同期が可能になります。
これで完了です!
おめでとうございます!Snowflake データベースを Squid に接続し、Squid のセキュリティ機能を使用してクライアントアプリケーションからの読み取りと書き込みを管理できました。Squid は Snowflake や他の integration でもさらに多くのことができます。Squid Client SDK documentation を確認して、mutations や queries のような他のデータベース機能について学ぶか、Squid AI を使ってデータをクエリすることを紹介する、こちら のような別のチュートリアルも試してみてください。