スキルOfficialdevelopment
☁️aidp-epm-cloud
- ソース
- GitHub で見る ↗
説明
Oracle EPM Cloud(Planning / EPBCS)に対してPlanningデータスライスのエクスポートを実行し、AIDPノートブック上でSpark DataFrameとして具体化します。 次のような場合に使用: ユーザーがEPM Cloud、EPBCS、Hyperion Planning、Planningアプリ、MDXエクスポートについて言及している場合、またはSparkでPlanningデータを利用したい場合。 認証にはIDドメインプレフィックス付きユーザー名によるHTTP Basic認証を使用します。
原文を表示
Run a Planning data-slice export against Oracle EPM Cloud (Planning / EPBCS) and materialize as a Spark DataFrame in an AIDP notebook. Use when the user mentions EPM Cloud, EPBCS, Hyperion Planning, planning app, MDX export, or wants Planning data in Spark. HTTP Basic auth with identity-domain-prefixed username.
ユースケース
- ✓EPM Cloud/EPBCSのPlanningデータをエクスポートするとき
- ✓AIDPノートブックでPlanningデータを扱うとき
- ✓SparkでPlanningデータを利用したいとき
- ✓MDXエクスポートを実行するとき
本文(日本語訳)
aidp-epm-cloud — EPM Cloud Planning REST → Spark
使用する場面
次のような場合に使用:
- EPM Cloud から Planning のデータスライス(POV × 列 × 行)を Spark に取り込みたい場合。
- ユーザーが「EPM Cloud」「EPBCS」「Hyperion Planning」「planning app」「exportdataslice」「MDX export」といったキーワードに言及している場合。
使用しない場面
- オンプレミスの Essbase 21c で MDX を使用する場合 →
aidp-essbaseを使用してください。 - Fusion ERP / HCM の場合 →
aidp-fusion-restを使用してください。
AIDP ノートブックの前提条件
pip install requests pandas(通常はプリインストール済み)。- ヘルパーが
sys.pathに追加されていること。 - EPM の pod URL と、
tenancy.user@domain形式の認証情報。
認証方式: HTTP Basic
import os
from oracle_ai_data_platform_connectors.auth import http_basic_session
from oracle_ai_data_platform_connectors.rest.epm import (
list_applications, export_data_slice, slice_to_long_dataframe,
)
# EPM_USERNAME はアイデンティティドメイン形式で指定すること: tenancy.user@domain
# 例: epmloaner622.first.last@oracle.com
session = http_basic_session(
username=os.environ["EPM_USERNAME"],
password=os.environ["EPM_PASSWORD"],
base_url=os.environ["EPM_BASE_URL"],
)
# 事前確認: 認証情報が有効かつアプリに到達可能かを確認
apps = list_applications(session, os.environ["EPM_BASE_URL"])
print("applications:", [a["name"] for a in apps])
# エクスポートを実行
slice_response = export_data_slice(
session=session,
base_url=os.environ["EPM_BASE_URL"],
application=os.environ["EPM_APPLICATION"],
plan_type=os.environ["EPM_PLAN_TYPE"],
grid_definition={
"suppressMissingBlocks": True,
"suppressMissingRows": True,
"pov": {
"dimensions": ["HSP_View", "Year", "Scenario", "Version", "Entity", "Product"],
"members": [["BaseData"], ["FY26"], ["Actual"], ["Working"], ["Total Entity"], ["P_TP"]]
},
"columns": [{"dimensions": ["Period"], "members": [["Jan", "Feb", "Mar", "Apr", "May", "Jun"]]}],
"rows": [{"dimensions": ["Account"], "members": [["IChildren(PL)"]]}],
},
)
df = slice_to_long_dataframe(spark, slice_response)
df.show(10)
print("cells:", df.count())
注意事項
- ユーザー名にはアイデンティティドメインのプレフィックスが必須です。
tenancy.user@domainの形式(例:epmloaner622.first.last@oracle.com)で指定してください。 プレフィックスなしのfirst.last@oracle.comでは 401 が返されます。 - POV のメンバーはリーフレベルである必要があります。
IChildren()やILvl0Descendants()を使わずに親メンバーを渡すと、EPM は 400 エラーまたは空のレスポンスを返します。 #Missingセルについて — 空の Planning ブロックはリテラル文字列"#Missing"として返されます。 ヘルパーはこの値をvalue列にそのまま保持します。必要に応じて数値型にキャストするか、フィルタリングして除外してください。- 401 と 403 の違い — 401 = 認証失敗(Basic 認証情報を再確認してください)。 403 = アクセス権限なし(異なるコードパスに該当するため、リトライしないでください)。
参考リンク
- ヘルパースクリプト: scripts/oracle_ai_data_platform_connectors/rest/epm.py
- EPM Planning REST ドキュメント: https://docs.oracle.com/en/cloud/saas/planning-budgeting-cloud/pbcrr/
原文(English)を表示
aidp-epm-cloud — EPM Cloud Planning REST → Spark
When to use
- User wants to pull a Planning data slice (POV × columns × rows) from EPM Cloud into Spark.
- User mentions: "EPM Cloud", "EPBCS", "Hyperion Planning", "planning app", "exportdataslice", "MDX export".
When NOT to use
- For Essbase 21c on-prem MDX → use
aidp-essbase. - For Fusion ERP / HCM → use
aidp-fusion-rest.
Prerequisites in the AIDP notebook
pip install requests pandas(usually pre-installed).- Helpers on
sys.path. - EPM pod URL + credentials in the form
tenancy.user@domain.
Auth: HTTP Basic
import os
from oracle_ai_data_platform_connectors.auth import http_basic_session
from oracle_ai_data_platform_connectors.rest.epm import (
list_applications, export_data_slice, slice_to_long_dataframe,
)
# EPM_USERNAME MUST be in identity-domain form: tenancy.user@domain
# e.g. epmloaner622.first.last@oracle.com
session = http_basic_session(
username=os.environ["EPM_USERNAME"],
password=os.environ["EPM_PASSWORD"],
base_url=os.environ["EPM_BASE_URL"],
)
# Pre-flight: confirm credentials work and the app is reachable
apps = list_applications(session, os.environ["EPM_BASE_URL"])
print("applications:", [a["name"] for a in apps])
# Run the export
slice_response = export_data_slice(
session=session,
base_url=os.environ["EPM_BASE_URL"],
application=os.environ["EPM_APPLICATION"],
plan_type=os.environ["EPM_PLAN_TYPE"],
grid_definition={
"suppressMissingBlocks": True,
"suppressMissingRows": True,
"pov": {
"dimensions": ["HSP_View", "Year", "Scenario", "Version", "Entity", "Product"],
"members": [["BaseData"], ["FY26"], ["Actual"], ["Working"], ["Total Entity"], ["P_TP"]]
},
"columns": [{"dimensions": ["Period"], "members": [["Jan", "Feb", "Mar", "Apr", "May", "Jun"]]}],
"rows": [{"dimensions": ["Account"], "members": [["IChildren(PL)"]]}],
},
)
df = slice_to_long_dataframe(spark, slice_response)
df.show(10)
print("cells:", df.count())
Gotchas
- Username MUST include the identity-domain prefix.
tenancy.user@domain(e.g.epmloaner622.first.last@oracle.com). The barefirst.last@oracle.comreturns 401. - POV members must be leaf-level. EPM returns 400 / empty if you pass a parent member without
IChildren()/ILvl0Descendants(). #Missingcells — empty Planning blocks come back as the literal string"#Missing". Helper preserves this in thevaluecolumn; cast to numeric and filter as needed.- 401 vs 403 — 401 = auth fail (re-check Basic creds). 403 = permission denied (different code path; don't retry).
References
- Helpers: scripts/oracle_ai_data_platform_connectors/rest/epm.py
- EPM Planning REST docs: https://docs.oracle.com/en/cloud/saas/planning-budgeting-cloud/pbcrr/
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。