次の方法で共有


AI 関数を使用する (プレビュー)

適用対象:✅ Microsoft Fabric の SQL 分析エンドポイントおよびウェアハウス

Important

この機能は プレビュー段階です

Fabric Data Warehouse と SQL 分析エンドポイントには、SQL クエリ内でテキストを直接分析、分類、集計、変換するために使用できる組み込みの AI 関数が用意されています。 これらの関数を使用すると、データ環境を離れることなく高度なテキスト処理を実行できます。 このチュートリアルでは、AI 関数を使用してテキストを変換する方法について説明します。

Function Purpose 構文の例
ai_analyze_sentiment 入力テキストのセンチメントを検出する ai_analyze_sentiment(<text>)
ai_classify 指定されたラベルに基づいてテキストを分類する ai_classify(<text>, <class1>, <class2>, ...)
ai_extract エンティティを JSON プロパティとして抽出する ai_extract(<text>, <class1>, <class2>, ...)
ai_summarize テキストを要約する ai_summarize(<text>)
ai_generate_response プロンプトに基づいて応答を生成する ai_generate_response(<prompt>, <data>)
ai_translate 入力テキストを指定したターゲット言語に翻訳する ai_translate(<text>, <lang>)
ai_fix_grammar テキスト内の文法を修正する ai_fix_grammar(<text>)

これらの関数は、外部 AI API を呼び出してテキストを処理します。これはクエリのパフォーマンスに影響を与える可能性があります。 効率を最適化するには、同じデータセットに対する SELECT クエリ内で繰り返しテキスト変換を適用しないようにします。 代わりに、AI 関数の結果を個別の列またはステージング テーブルとして事前計算して具体化します。

Warnung

AI モデルがテキストを処理できない場合、関数は NULL を返します。 よくあるのは次のような理由です。

  • 責任ある AI ルールは、入力テキスト内の不適切なコンテンツをブロックします。
  • 入力テキストがトークンの制限を超えています。 現在のモデルでは、最大 15 KB のテキストがサポートされています。

AI 関数の一般的な処理速度は、1 秒あたり 20 から 100 行です。 パフォーマンスが低下する場合は、問題のあるクエリを問題として報告してください。

ワークスペースで AI 関数を 有効にするための AI 関数の前提条件を確認します。 Azure OpenAI Service の AI 関数は、一部のリージョンで利用できます

センチメントの分析

ai_analyze_sentiment(text)関数は、入力textからのセンチメントを分析し、positivenegativemixed、またはneutralのいずれかの値を返します。

Example:

SELECT ai_analyze_sentiment('This hotel was great!') AS sentiment;

予想される結果:positive

テキストを分類する

ai_classify(text, class1, class2, ...)関数は、入力textを指定されたカテゴリのいずれかに分類します。

Example:

SELECT ai_classify('Room was dirty', 'service','dirt','food') AS classification;

予想される結果:dirt

テキストからエンティティを抽出する

ai_extract(text, class1, class2, ...)関数は、指定したクラスに基づいて入力textからエンティティを抽出します。

Example:

SELECT ai_extract('Check-in was late and room dirty', 'sentiment','problem') AS extraction;

予想される結果:{"sentiment":"Negative","problem":"Dirty room"}

応答の生成

ai_generate_response(prompt, data)関数は、指定されたpromptと省略可能なdataに基づいて応答を生成します。

Example:

SELECT ai_generate_response('Reply in 20 words:', 'The room was noisy.') AS response;

予想される結果: 「騒音によるご不便をおかけして誠に申し訳ございません。防音対策の強化に努めます。

テキストを要約する

ai_summarize(text)関数は、入力textを簡潔なバージョンにまとめます。

Example:

SELECT ai_summarize('The hotel was clean and staff were friendly.') AS summary;

予想される結果: 「清潔なホテル、親切なスタッフ。」

テキストを翻訳する

ai_translate(text, lang_code)関数は、textを使用してlang_codeを指定された言語に変換します。

サポートされている言語コードは、 de (ドイツ語)、 en (英語)、 fr (フランス語)、 it (イタリア語)、 es (スペイン語)、 el (ギリシャ語)、 pl (ポーランド語)、 sv (スウェーデン語)、 fi (フィンランド語)、 cs (チェコ語) です。

Example:

SELECT ai_translate('The hotel was great','de') AS translation_de;

予想される結果: 'Das Hotel war großartig.'

文法を修正する

ai_fix_grammar(text)関数は、入力textの文法を修正します。

Example:

SELECT ai_fix_grammar('Th room are clean and staff were nice') AS fixed_text;

予想される結果: 「部屋がきれいで、スタッフの対応が良かった。」

例示

A. AI 関数を使用してデータをインポートし、テキスト列を変換する

このサンプルでは、Lakehouse ファイルからウェアハウス内の hotel_reviews テーブルにデータを読み込みます。 /Files セクションのファイルから選択し、AI 関数を適用してデータを強化します。

CREATE TABLE HotelDW.dbo.hotel_reviews
AS
SELECT
    city, latitude, longitude, name, reviews_rating, reviews_text,
    ai_summarize(reviews_text) AS reviews_summary,
    ai_classify( reviews_text, 'service', 'dirt', 'food', 'air conditioning', 'other') AS reviews_classification,
    ai_analyze_sentiment(reviews_text) AS reviews_sentiment,
    ai_translate(reviews_text, 'de') AS reviews_text_de,
    ai_translate(reviews_text, 'es') AS reviews_text_es,
    ai_translate(reviews_text, 'fr') AS reviews_text_fr,
    ai_translate(reviews_text, 'it') AS reviews_text_it
FROM OPENROWSET( BULK '/Files/csv/hotel_reviews_demo.csv', DATA_SOURCE = 'TextLakehouse', HEADER_ROW = TRUE);

B. AI 関数を使用してテキスト列を更新する

次の例では、 reviews_text 列の文法エラーを修正します。

UPDATE HotelDW.dbo.hotel_reviews
SET reviews_text = ISNULL(ai_fix_grammar(reviews_text), reviews_text);

エラーが発生した場合、AI 関数は NULL を返す可能性があるため、既存の値を NULL で上書きしないようにします。

ISNULL(<ai function>, <original value>) パターンを使用して、AI 関数が結果を返さない場合に元のテキストを保持します。

C. テキストから値を抽出する

この例では、 ai_extract 関数はレビュー テキストを分析し、 sentimenttime_reported、および problemのプロパティを含む JSON オブジェクトを返します。 次に、 OPENJSON 関数はこの JSON を解析し、これらのプロパティを個別の列にマップして、クエリと分析を容易にします。

このサンプル スクリプトでは、抽出された値をターゲット テーブルに個別の列として挿入します。

INSERT INTO gold.hotel_reviews
SELECT sentiment, time_reported, problem
FROM hotel_reviews
CROSS APPLY 
OPENJSON(
    ai_extract(reviews_text, 'sentiment', 'time_reported', 'problem')
) WITH ( sentiment VARCHAR(1000), time_reported VARCHAR(100), problem VARCHAR(1000) );

ai_extract関数は、あいまいコンテキスト ルールを適用して、手動の解析や複雑な正規表現を必要とせずに、テキストからトピックを識別して抽出します。 このアプローチでは、厳密なパターン マッチングではなく AI 主導のセマンティック理解を使用してテキスト分析を簡略化し、自然言語のバリエーションにより堅牢で適応性を高めます。