チュートリアル: Slack メッセージを送信する
プレビュー
この機能は パブリック プレビュー段階です。
このチュートリアルでは、Slack チャンネルにメッセージを投稿するLakeflow Designer 用のSQL UDFオペレーターを作成します。 SQL UDFは、関数がHTTP経由で外部APIs呼び出す必要がある場合に最適な選択肢です。 より詳しい概要については、 Lakeflow Designer のユーザー定義演算子」を参照してください。
概要
この演算子は、以下を使用して Slack にメッセージを送信します。
- SQL UDF : Python ではなく SQL で記述されています。
- Unity Catalog HTTP 接続 : Slack API 資格情報を安全に管理します。
- プレビューモードのサポート :ワークフローのプレビュー中に実際のSlack API呼び出しが行われるのを防ぎます。
- 式の問題 : DataFrame列からの動的メッセージ コンテンツを許可します。
なぜ SQL UDF なのか?
外部APIs (Slack、 RESTエンドポイント、Webhook など) を呼び出す必要があるオペレーターの場合は、 SQL UDF を使用する必要があります。 Python UDF および UDTF は HTTP リクエストを行うことができません。SQL UDF はUnity Catalog接続で動作するhttp_request()関数にアクセスできます。
ステップ 1: Unity Catalog HTTP 接続をセットアップする
UDF を作成する前に、Slack API 資格情報を安全に保存するために Unity Catalog HTTP 接続を設定する必要があります。<xoxb-your-slack-bot-token>実際の Slack Bot トークンに置き換えます。これは Slack アプリの設定から取得できます。同じ接続を複数の UDF にわたって使用できます。詳細については、 「外部 HTTP サービスへの接続」を参照してください。
-- Create a connection to store Slack credentials securely
CREATE CONNECTION my_slack_connection TYPE HTTP OPTIONS (
host 'https://slack.com',
port '443',
base_path '/api/',
bearer_token '<xoxb-your-slack-bot-token>'
);
ステップ 2: オペレーター YAML を作成する
ここで、オペレーターの YAML を作成します。スキーマの詳細については、 「ユーザー定義演算子 YAML リファレンス」を参照してください。
この演算子の YAML には以下が含まれます。
- 式パラメーター (
msg): データフレーム列からの動的なメッセージ コンテンツを許可します。 - 文字列不利 (
channel): 静的なチャンネル名/ID。 - プレビューモード (
is_preview):format: is_previewを持つ設定プロパティで、プレビューモードを有効にして、テスト中に実際の API 呼び出しを防止します。
schema: user-defined-operator-v0.1.0
type: uc-udf
name: Send Slack Message
id: send_msg
version: '1.0.0'
description: Send Slack Message to a Channel
config:
type: object
properties:
msg:
type: string
format: expression
title: Message
examples:
- 'Select message column or expression'
x-ui:
widget: expression
port: input_data
channel:
type: string
title: Channel
is_preview:
type: boolean
format: is_preview
default: false
required:
- msg
- channel
additionalProperties: false
ports:
input:
- name: input_data
title: Input Data
output:
- name: output
title: Send Response Data
これには以下が含まれます。
設定キー | ウィジェット | 目的 |
|---|---|---|
|
| 入力データからの動的なメッセージ コンテンツ。 |
|
| 送信先の Slack チャンネル (例: |
| N/A | オペレーターがプレビュー中に異なる動作をするようにするブール型の設定プロパティで、値は |
ステップ 3: Unity Catalog関数を作成する
SQL UDFを作成する際には、ほとんどのSQLクエリとは異なる点がいくつかあります。
AS $$の代わりにRETURN構文を使用してください。- YAML 構成を SQL コメント ブロック (
/* ... */) に埋め込みます。 - API 呼び出しに
http_request関数を使用できます。
CREATE OR REPLACE FUNCTION main.my_schema.send_slack_msg(
msg STRING,
channel STRING,
is_preview BOOLEAN
)
RETURNS STRING
RETURN (/*
schema: user-defined-operator-v0.1.0
type: uc-udf
name: Send Slack Message
id: send_msg
version: "1.0.0"
description: Send Slack Message to a Channel
config:
type: object
properties:
msg:
type: string
format: expression
title: Message
examples:
- "Select message column or expression"
x-ui:
widget: expression
port: input_data
channel:
type: string
title: Channel
is_preview:
type: boolean
format: is_preview
default: false
required:
- msg
- channel
additionalProperties: false
ports:
input:
- name: input_data
title: Input Data
output:
- name: output
title: Send Response Data
*/
CASE
WHEN NOT is_preview THEN
http_request(
conn => 'my_slack_connection',
method => 'POST',
path => 'chat.postMessage',
json => to_json(named_struct('channel', channel, 'text', msg)),
headers => map('Content-Type', 'application/json;charset=utf-8')
).text
ELSE 'Preview mode - no message sent to ' || channel
END
);
この SQL 関数には次の機能が含まれます。
機能 | 目的 |
|---|---|
| 外部APIsへの HTTP 呼び出しを行います。 |
| 認証のために UC 接続を参照します。 |
| Slack API の JSON ペイロードを構築します。 |
YAMLコメントブロック | Lakeflow Designer がオペレーターを作成するために使用されます。 |
| プレビュー モード ロジックを実装します。 |
ステップ 4: 機能をテストする
次に、関数を演算子として登録する前に、正しく動作するかどうかをテストしてください。
Slack メッセージを送信しないようにするには、まずプレビュー モードでテストします。
-- Test in preview mode (won't send real message)
SELECT main.my_schema.send_slack_msg(
'Hello from Lakeflow Designer!',
'#test-channel',
true -- is_preview = true
) AS result;
-- Expected result: "Preview mode - no message sent to #test-channel"
外部 API 呼び出しでテストします (Slack にメッセージを送信します):
-- Test with real API call (USE WITH CAUTION!)
SELECT main.my_schema.send_slack_msg(
'Hello from Lakeflow Designer!',
'#test-channel',
false -- is_preview = false
) AS result;
-- Expected: Slack API response JSON
ステップ 5: オペレーターを登録する
.user_defined_operators.yamlファイルに演算子を追加します:
operators:
- catalog: main
schema: my_schema
functionName: send_slack_msg
このファイルをユーザーフォルダ内に定義した場合、そのファイルはあなた以外には表示されません。詳細については、 「オペレータを検出可能にする」を参照してください。
ステップ 6: 権限を設定する
Unity Catalog接続を使用するSQL UDF の場合、ユーザーには追加の権限が必要です。
-- Schema and function access
GRANT USE SCHEMA ON SCHEMA main.my_schema TO `<user>`;
GRANT EXECUTE ON FUNCTION main.my_schema.send_slack_msg TO `<user>`;
-- Connection access (required for API calls)
GRANT USE CONNECTION ON CONNECTION my_slack_connection TO `<user>`;
USE CONNECTION権限がないと、ユーザーは関数を実行できても API 呼び出しを行うことができません。
Lakeflow Designer での演算子の使用
登録されると、オペレーターはLakeflow Designer に次のように表示されます。
- データソースを接続するための入力ポート。
- メッセージの内容が含まれる列を選択するための式ピッカー。
- Slack チャンネルのテキスト入力。
ユーザーは、データに基づいて通知を送信できます。たとえば、特定のしきい値を超えたときに警告を送信できます。
一般的な使用例
- アラート - データ品質の問題が検出されると通知を送信します。
- 通知 — ワークフローが完了したときにチームに通知します。
- Webhook — 外部APIsを呼び出して下流のプロセスをトリガーします。
- ログ記録 - 監査メッセージを外部システムに送信します。
API呼び出し演算子を構築するためのベストプラクティス
- 常にプレビューモードを使用してください 。意図しないAPI呼び出しを防ぐために、
format: is_previewとともにis_preview設定プロパティを追加してください。 - Unity Catalog接続を使用します 。UDF にUDF情報をハードコードしないでください。 Unity Catalog接続はSQL UDF でのみ使用できます。
- エラーを適切に処理します 。API 呼び出しは失敗する可能性があります。エラー時に何を返すかを検討してください。
- 徹底的にテストする - 開発中はプレビュー モードを使用します。
- 接続設定を文書化します 。ユーザーはどのような接続を作成する必要があるかを知る必要があります。