スキルOfficialdevelopment
🔗aidp-fusion-rest
- ソース
- GitHub で見る ↗
説明
Oracle Fusion ERP / HCM / SCM の REST API からデータを取得し、AIDP ノートブック上の Spark DataFrame に読み込みます。 次のような場合に使用: ユーザーが Fusion ERP、Fusion REST API、FA REST、Cloud ERP について言及している場合、または Fusion Pod からリアルタイムデータを取得したい場合。 認証方式は HTTP Basic 認証のみに対応。 1ページあたり499行を超える大量データの取得やバルクエクストラクトが必要な場合は、`aidp-fusion-bicc` にルーティングしてください。
原文を表示
Pull data from Oracle Fusion ERP / HCM / SCM REST APIs into a Spark DataFrame from an AIDP notebook. Use when the user mentions Fusion ERP, Fusion REST API, FA REST, Cloud ERP, or wants live data from a Fusion pod. HTTP Basic auth only. For volumes >499 rows/page or bulk extracts, route to aidp-fusion-bicc.
ユースケース
- ✓Fusion ERP のデータを取得するとき
- ✓Fusion REST API からデータを読み込むとき
- ✓Cloud ERP からリアルタイムデータを取得するとき
- ✓Spark DataFrame にデータを変換するとき
本文(日本語訳)
aidp-fusion-rest — Fusion ERP / HCM / SCM REST → Spark
次のような場合に使用
- ユーザーが Fusion REST API(
/fscmRestApi/、/hcmRestApi/等)から小〜中規模のレコードを Spark DataFrame に取り込みたい場合。 - ユーザーが「Fusion ERP」「Fusion REST」「FA REST」「Cloud ERP API」と言及している場合。
- 取得予定の総行数がメモリに余裕を持って収まる場合(≤ 約50,000行)。 499行を超える場合はヘルパーが自動ページングを行うが、大量取得には BICC の方が高速。
次のような場合には使用しない
- バルク抽出(>50,000行、日次スナップショット等)→
aidp-fusion-biccを使用。 Fusion の REST は1ページあたり499行が上限(MOS Doc ID 2429019.1)であり、数百万行をページングで取得するのは低速。 - EPM Cloud Planning →
aidp-epm-cloudを使用。 - Essbase MDX →
aidp-essbaseを使用。
AIDP ノートブックの前提条件
pip install requests pandas(通常はクラスターに導入済み)。- ヘルパーが
sys.pathに含まれていること。 - Fusion ポッドの URL と HTTP Basic 認証情報が用意されていること。
認証: HTTP Basic
import os
from oracle_ai_data_platform_connectors.auth import http_basic_session
from oracle_ai_data_platform_connectors.rest.fusion import (
fetch_paged, rows_to_spark_dataframe,
)
session = http_basic_session(
username=os.environ["FUSION_USER"],
password=os.environ["FUSION_PASSWORD"],
base_url=os.environ["FUSION_BASE_URL"],
)
rows = fetch_paged(
session=session,
base_url=os.environ["FUSION_BASE_URL"],
path="/fscmRestApi/resources/11.13.18.05/invoices",
fields="InvoiceId,InvoiceNumber,InvoiceAmount,InvoiceDate",
extra_params={"q": "InvoiceDate >= '2026-01-01'"},
)
df = rows_to_spark_dataframe(spark, rows)
df.show(5)
print("rows:", df.count())
注意事項
- 1ページあたり499行の上限 —
Fusion は
limit=500以上を指定しても黙って499行に切り捨てる。ヘルパーはこれを自動的に強制する。 onlyData=true— ヘルパーがこれを設定することで、Fusion の HATEOAS リンクエンベロープではなく実際のフィールドのみが返される。帯域幅の節約に有効。q=フィルター構文は Fusion 固有 — 例:q=InvoiceDate >= '2026-01-01' AND Status = 'PAID'文字列値はシングルクォートで囲むこと。- ネストされた構造体カラム —
Fusion のレスポンスにはネストされたオブジェクト(リンク、住所等)が含まれる。
rows_to_spark_dataframe()はデフォルトでmode="json_string"を使用し、各行を単一のrow_jsonカラムにまとめる。特定フィールドを取り出すには下流でfrom_jsonを使用すること。 - ネットワーク —
Fusion ポッドはパブリックアクセス可能(
*.fa.<region>.oraclecloud.com)であるため、AIDP VCN のルーティング設定は不要。
参考資料
原文(English)を表示
aidp-fusion-rest — Fusion ERP / HCM / SCM REST → Spark
When to use
- User wants to pull a small-to-medium volume of records from Fusion REST APIs (
/fscmRestApi/,/hcmRestApi/, etc.) into a Spark DataFrame. - User mentions: "Fusion ERP", "Fusion REST", "FA REST", "Cloud ERP API".
- Total expected rows fit comfortably in memory (≤ ~50k); for >499 rows the helper auto-pages, but for bulk → BICC is faster.
When NOT to use
- For bulk extracts (>50k rows, daily snapshots) → use
aidp-fusion-bicc. Fusion's REST surface is hard-capped at 499 rows/page (MOS Doc ID 2429019.1) — pulling millions paginated is slow. - For EPM Cloud Planning → use
aidp-epm-cloud. - For Essbase MDX → use
aidp-essbase.
Prerequisites in the AIDP notebook
pip install requests pandas(usually already on the cluster).- Helpers on
sys.path. - Fusion pod URL + HTTP Basic credentials.
Auth: HTTP Basic
import os
from oracle_ai_data_platform_connectors.auth import http_basic_session
from oracle_ai_data_platform_connectors.rest.fusion import (
fetch_paged, rows_to_spark_dataframe,
)
session = http_basic_session(
username=os.environ["FUSION_USER"],
password=os.environ["FUSION_PASSWORD"],
base_url=os.environ["FUSION_BASE_URL"],
)
rows = fetch_paged(
session=session,
base_url=os.environ["FUSION_BASE_URL"],
path="/fscmRestApi/resources/11.13.18.05/invoices",
fields="InvoiceId,InvoiceNumber,InvoiceAmount,InvoiceDate",
extra_params={"q": "InvoiceDate >= '2026-01-01'"},
)
df = rows_to_spark_dataframe(spark, rows)
df.show(5)
print("rows:", df.count())
Gotchas
- 499 row/page hard cap — Fusion silently truncates
limit=500+to 499. Helper enforces this automatically. onlyData=true— helper sets this so only the actual fields come back, not Fusion's HATEOAS link envelope. Saves bandwidth.q=filter syntax is Fusion-specific (q=InvoiceDate >= '2026-01-01' AND Status = 'PAID'). Quote string values in single quotes.- Nested struct columns — Fusion responses contain nested objects (links, addresses).
rows_to_spark_dataframe()defaults tomode="json_string"which packs each row into a singlerow_jsoncolumn. Usefrom_jsondownstream to project specific fields. - Network — Fusion pods are public (
*.fa.<region>.oraclecloud.com); no AIDP VCN routing needed.
References
- Helpers: scripts/oracle_ai_data_platform_connectors/rest/fusion.py
- Auth helpers: scripts/oracle_ai_data_platform_connectors/auth/user_principal.py
- Fusion REST API catalog: https://docs.oracle.com/en/cloud/saas/applications-common/24a/farws/index.html
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。