LlamaIndex を使って Python でAmazon Athena データに自然言語でクエリを実行する方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
Python で LlamaIndex を使用してリアルタイムのAmazon Athena のデータに自然言語でクエリを実行。

CData Python Connector for Amazon Athena を使用して、Amazon Athena からリアルタイムデータへのクエリを開始しましょう。LlamaIndex と AI の力を活用して、複雑な SQL クエリを書くことなく、シンプルな自然言語でインサイトを取得できます。意思決定を強化するリアルタイムデータアクセスのメリットを享受しながら、既存の Python アプリケーションと簡単に統合できます。

CData Python Connector は、組み込みの最適化されたデータ処理により、Python でリアルタイムのAmazon Athena のデータを操作する際に比類のないパフォーマンスを提供します。Python から複雑な SQL クエリを発行すると、ドライバーはフィルターや集計などのサポートされた SQL 操作を直接 Amazon Athena にプッシュし、埋め込み SQL エンジンを使用してサポートされていない操作(多くの場合 SQL 関数や JOIN 操作)をクライアント側で処理します。

トレンド分析、レポート作成、データの可視化など、CData Python Connector を使用すれば、リアルタイムのデータソースの可能性を最大限に活用できます。

Amazon Athena データ連携について

CData は、Amazon Athena のライブデータにアクセスし、統合するための最も簡単な方法を提供します。お客様は CData の接続機能を以下の目的で使用しています:

  • IAM 認証情報、アクセスキー、インスタンスプロファイルなど、さまざまな方法で安全に認証できます。多様なセキュリティニーズに対応し、認証プロセスを簡素化します。
  • 詳細なエラーメッセージにより、セットアップを効率化し、問題を迅速に解決できます。
  • サーバーサイドでのクエリ実行により、パフォーマンスを向上させ、クライアントリソースへの負荷を最小限に抑えます。

ユーザーは、Tableau、Power BI、Excel などの分析ツールと Athena を統合し、お気に入りのツールから詳細な分析を行うことができます。

CData を使用した Amazon Athena のユニークなユースケースについては、ブログ記事をご覧ください:https://jp.cdata.com/blog/amazon-athena-use-cases


はじめに


概要

LlamaIndex を使用して、CData Python Connector forAmazon Athena のデータでリアルタイムデータにクエリを実行する方法の概要です:

  • ロギング、データベース接続、NLP に必要な Python、CData、LlamaIndex モジュールをインポートします。
  • アプリケーションからの API リクエストを認証するための OpenAI API キーを取得します。
  • CData Python Connector を使用してリアルタイムのAmazon Athena のデータに接続します。
  • OpenAI を初期化し、自然言語クエリを処理するための SQLDatabase と NLSQLTableQueryEngine のインスタンスを作成します。
  • クエリエンジンと特定のデータベースインスタンスを作成します。
  • 自然言語クエリ(例:「最も稼いでいる従業員は誰ですか?」)を実行して、データベースから構造化されたレスポンスを取得します。
  • 取得したデータを分析してインサイトを得て、データドリブンな意思決定に役立てます。

必要なモジュールのインポート

CData、データベース接続、自然言語クエリに必要なモジュールをインポートします。

import os
import logging
import sys

# ロギングの設定
logging.basicConfig(stream=sys.stdout, level=logging.INFO, force=True)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))

# CData と LlamaIndex に必要なモジュールをインポート
import cdata.amazonathena as mod
from sqlalchemy import create_engine
from llama_index.core.query_engine import NLSQLTableQueryEngine
from llama_index.core import SQLDatabase
from llama_index.llms.openai import OpenAI

OpenAI API キーの設定

OpenAI の言語モデルを使用するには、API キーを環境変数として設定する必要があります。システムの環境変数で OpenAI API キーが利用可能であることを確認してください。

# 環境変数から OpenAI API キーを取得
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]

''または、コード内で直接 API キーを追加することもできます(ただし、セキュリティリスクのため、本番環境ではこの方法は推奨されません):''

# API キーを直接設定(本番使用には非推奨)
OPENAI_API_KEY = "your-api-key-here"

データベース接続の作成

次に、必要な接続プロパティを含む接続文字列を使用して、CData Connector で Amazon Athena への接続を確立します。

Amazon Athena 接続プロパティの取得・設定方法

それでは、早速Athena に接続していきましょう。

データに接続するには、以下の接続パラメータを指定します。

  • DataSource:接続するAmazon Athena データソース。
  • Database:接続するAmazon Athena データベース。
  • AWSRegion:Amazon Athena データがホストされているリージョン。
  • S3StagingDirectory:クエリの結果を保存するS3 フォルダ。

Database またはDataSource が設定されていない場合、CData 製品はAmazon Athena の利用可能なデータソースからすべてのデータベースのリスト化を試みます。そのため、両方のプロパティを設定することでCData 製品のパフォーマンスが向上します。

Amazon Athena の認証設定

CData 製品は幅広い認証オプションに対応しています。詳しくはヘルプドキュメントの「はじめに」を参照してみてください。

AWS キーを取得

IAM ユーザーの認証情報を取得するには、以下のステップお試しください。

  1. IAM コンソールにサインインします。
  2. ナビゲーションペインでユーザーを選択します。
  3. ユーザーのアクセスキーを作成または管理するには、ユーザーを選択してからセキュリティ認証情報タブに移動します。

AWS ルートアカウントの資格情報を取得するには、以下のステップをお試しください。

  1. ルートアカウントの認証情報を使用してAWS 管理コンソールにサインインします。
  2. アカウント名または番号を選択します。
  3. 表示されたメニューでMy Security Credentials を選択します。
  4. ルートアカウントのアクセスキーを管理または作成するには、Continue to Security Credentials をクリックし、[Access Keys]セクションを展開します。

その他の認証オプションについては、ヘルプドキュメントの「Amazon Athena への認証」を参照してください。

Amazon Athena への接続

# CData Python Connector for Amazon Athena を使用してデータベースエンジンを作成
engine = create_engine("cdata_amazonathena_2:///?User=AccessKey='a123';SecretKey='s123';Region='IRELAND';Database='sampledb';S3StagingDirectory='s3://bucket/staging/';")

OpenAI インスタンスの初期化

OpenAI 言語モデルのインスタンスを作成します。ここで、temperature やモデルバージョンなどのパラメータを指定できます。

# OpenAI 言語モデルインスタンスを初期化
llm = OpenAI(temperature=0.0, model="gpt-3.5-turbo")

データベースとクエリエンジンの設定

SQL データベースとクエリエンジンを設定します。NLSQLTableQueryEngine を使用すると、SQL データベースに対して自然言語クエリを実行できます。

# SQL データベースインスタンスを作成
sql_db = SQLDatabase(engine)  # すべてのテーブルを含む

# 自然言語 SQL クエリ用のクエリエンジンを初期化
query_engine = NLSQLTableQueryEngine(sql_database=sql_db)

クエリの実行

これで、リアルタイムのデータソースに対して自然言語クエリを実行できます。この例では、最も稼いでいる従業員上位 2 名をクエリします。

# クエリ文字列を定義
query_str = "Who are the top earning employees?"

# クエリエンジンからレスポンスを取得
response = query_engine.query(query_str)

# レスポンスを出力
print(response)

CData Python Connector for Amazon Athena の無料 30 日間トライアルをダウンロードして、リアルタイムデータへのシームレスなクエリを始めましょう。自然言語処理の力を体験し、データから貴重なインサイトを引き出してください。

はじめる準備はできましたか?

Amazon Athena Connector のコミュニティライセンスをダウンロード:

 ダウンロード

詳細:

Amazon Athena Icon Amazon Athena Python Connector お問い合わせ

Amazon Athena へのデータ連携用のPython Connecotr ライブラリ。 pandas、SQLAlchemy、Dash、petl などの主要なPython ツールにAmazon Athena をシームレスに統合。