claude-skills/

Anthropic公式スキル・プラグインの日本語ディレクトリ

last sync 22h ago
スキルOfficialdevelopment

📊aidp-essbase

説明

Oracle Essbase 21c のキューブに対して MDX クエリを実行し、結果を AIDP ノートブック内の Spark DataFrame として具体化します。 次のような場合に使用: ユーザーが Essbase、MDX、Essbase 21c、OLAP キューブについて言及している場合、またはキューブデータを Spark に読み込みたい場合。 認証方式: HTTP Basic 認証。

原文を表示

Run an MDX query against an Oracle Essbase 21c cube and materialize the result as a Spark DataFrame in an AIDP notebook. Use when the user mentions Essbase, MDX, Essbase 21c, OLAP cube, or wants to read cube data into Spark. Auth is HTTP Basic.

ユースケース

  • Essbaseキューブに対してMDXクエリを実行したい
  • キューブデータをSparkDataFrameとして読み込みたい
  • AIDP ノートブック内でOLAPデータを分析したい

本文(日本語訳)

aidp-essbase — Essbase 21c MDX → Spark

次のような場合に使用

  • ユーザーが Essbase 21c キューブに対して MDX SELECT を実行し、その結果を Spark に読み込みたい場合。
  • ユーザーが「Essbase」「MDX」「OLAP キューブ」「Essbase REST」「21c キューブ」などに言及している場合。

使用しない場合

  • EPM Cloud Planning(クラウドホスト型)の場合 → aidp-epm-cloud を使用すること。

AIDP ノートブックの前提条件

  1. pip install requests pandas を実行済みであること。
  2. ヘルパーが sys.path に追加済みであること。
  3. Essbase REST URL および Basic 認証情報が用意されていること。
  4. AIDP → Essbase ホスト間のネットワーク疎通が確保されていること (プライベートサブネット上に配置されていることが多いため、nc -zv <host> 9000 で疎通確認を行うこと)。

認証方式: HTTP Basic

Essbase 21c REST API は Authorization: Basic base64(user:pass) 形式を要求します。 JET UI は IDCS OAuth にリダイレクトしますが、REST エンドポイントは Basic 認証のみに対応しています。 OCI セッションの JWT を Bearer として渡しても、IDプロバイダーが異なるため認証は失敗します。 ユーザー名には Essbase のサービス管理者アカウント(例: Oacadmin1)を使用してください。

Essbase ホストが AIDP クラスターに信頼されていない内部 CA チェーン(例: cealinfra.com)を使用している場合は、 セッションヘルパーに verify_tls=False を渡してください。 https://ess21c.cealinfra.com/ に対して動作検証済みです。

import os, urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)  # 内部CA用
from oracle_ai_data_platform_connectors.auth import http_basic_session
from oracle_ai_data_platform_connectors.rest.essbase import (
    execute_mdx, mdx_result_to_spark_dataframe,
)

session = http_basic_session(
    username=os.environ["ESSBASE_USER"],
    password=os.environ["ESSBASE_PASSWORD"],
    base_url=os.environ["ESSBASE_BASE_URL"],
    verify_tls=False,   # 信頼済みパブリックCAの場合は True に設定
)

mdx_query = """
SELECT
  {[Measures].[Sales]} ON COLUMNS,
  {[Product].[Product Family].Members} ON ROWS
FROM [Sample.Basic]
WHERE ([Year].[2026], [Scenario].[Actual])
"""

response = execute_mdx(
    session=session,
    base_url=os.environ["ESSBASE_BASE_URL"],
    application=os.environ["ESSBASE_APPLICATION"],
    cube=os.environ["ESSBASE_CUBE"],
    mdx_query=mdx_query,
)

df = mdx_result_to_spark_dataframe(spark, response)
df.show(20)
print("cells:", df.count())

注意事項

  • MDX の波括弧 {...} は必須です。 メンバーセットは必ず波括弧で囲んでください。[Product].[Product Family].Members をそのまま記述すると 400 エラーになります。

  • WHERE 句(スライサー)による POV 指定について。 WHERE で次元を省略した場合、Essbase はその次元のデフォルト値(多くの場合、親メンバー)を使用するため、 集計済みデータや空データが返される可能性があります。

  • ネットワーク接続について。 Essbase 21c は通常プライベートホスト(ポート 9000 / 9001)上に展開されます。 MDX エラーの調査に入る前に、ネットワーク疎通を必ず確認してください。

  • #Missing セルについて。 キューブ上の空のインターセクションは文字列リテラル "#Missing" として返されます。 ヘルパーはそのまま保持するため、必要に応じて型変換を行ってください。

  • 空結果でも HTTP 200 が返ります。 MDX がどのデータにもマッチしない場合でも、Essbase は 200 を返します。 HTTP ステータスに依存せず、常に df.count() == 0 で空チェックを行ってください。

参照

原文(English)を表示

aidp-essbase — Essbase 21c MDX → Spark

When to use

  • User wants to run an MDX SELECT against an Essbase 21c cube and load the result into Spark.
  • User mentions: "Essbase", "MDX", "OLAP cube", "Essbase REST", "21c cube".

When NOT to use

Prerequisites in the AIDP notebook

  1. pip install requests pandas.
  2. Helpers on sys.path.
  3. Essbase REST URL + Basic credentials.
  4. Network reachability AIDP → Essbase host (often on a private subnet — confirm nc -zv <host> 9000).

Auth: HTTP Basic

Essbase 21c REST API expects Authorization: Basic base64(user:pass). The JET UI redirects to IDCS OAuth, but the REST surface is Basic-only — passing an OCI session JWT as Bearer fails (different identity provider). Username is the Essbase service-admin (e.g. Oacadmin1).

If your Essbase host uses an internal CA chain not trusted by the AIDP cluster (e.g. cealinfra.com), pass verify_tls=False to the session helper. Live-validated against https://ess21c.cealinfra.com/.

import os, urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)  # internal CA
from oracle_ai_data_platform_connectors.auth import http_basic_session
from oracle_ai_data_platform_connectors.rest.essbase import (
    execute_mdx, mdx_result_to_spark_dataframe,
)

session = http_basic_session(
    username=os.environ["ESSBASE_USER"],
    password=os.environ["ESSBASE_PASSWORD"],
    base_url=os.environ["ESSBASE_BASE_URL"],
    verify_tls=False,   # set True for trusted public CAs
)

mdx_query = """
SELECT
  {[Measures].[Sales]} ON COLUMNS,
  {[Product].[Product Family].Members} ON ROWS
FROM [Sample.Basic]
WHERE ([Year].[2026], [Scenario].[Actual])
"""

response = execute_mdx(
    session=session,
    base_url=os.environ["ESSBASE_BASE_URL"],
    application=os.environ["ESSBASE_APPLICATION"],
    cube=os.environ["ESSBASE_CUBE"],
    mdx_query=mdx_query,
)

df = mdx_result_to_spark_dataframe(spark, response)
df.show(20)
print("cells:", df.count())

Gotchas

  • MDX braces {...} are required around member sets — bare [Product].[Product Family].Members returns 400.
  • WHERE slicer for POV — if you skip dimensions in WHERE, Essbase uses dimension defaults, which may be parents (returns aggregated/empty data depending on aggregation).
  • Network — Essbase 21c is typically deployed on a private host (port 9000 / 9001). Confirm reachability before chasing MDX errors.
  • #Missing cells — empty cube intersections return the literal "#Missing". Helper preserves; cast as needed.
  • HTTP 200 with empty result — Essbase returns 200 even when MDX matches nothing. Always check df.count() == 0 rather than relying on the HTTP status.

References

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。