Skip to main content

aidp-fusion-bicc

Pull a Fusion BICC bulk extract into a Spark DataFrame from an AIDP notebook. Use when the user mentions BICC, Fusion bulk extract, BI Cloud Connector, PVO, or needs >50k rows from Fusion. The recommended path uses AIDP's built-in `spark.read.format("aidataplatform")` connector (matches the official Oracle AIDP sample). HTTP Basic auth.

Ir para a instalação

Informações da origem

Repositório
oracle-samples/oracle-aidp-samples
Última atividade na origem
26 de junho de 2026 às 15:45
Idioma detectado do SKILL.md
inglês
Estrelas
46
Forks
30

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
aidp-fusion-bicc
description
Pull a Fusion BICC bulk extract into a Spark DataFrame from an AIDP notebook. Use when the user mentions BICC, Fusion bulk extract, BI Cloud Connector, PVO, or needs >50k rows from Fusion. The recommended path uses AIDP's built-in `spark.read.format("aidataplatform")` connector (matches the official Oracle AIDP sample). HTTP Basic auth.
allowed-tools
Read, Write, Edit, Bash
# `aidp-fusion-bicc` — Fusion BICC bulk extract → Spark Mirrors the official Oracle AIDP sample at [oracle-samples/oracle-aidp-samples → `data-engineering/ingestion/Read_Only_Ingestion_Connectors.ipynb`](https://github.com/oracle-samples/oracle-aidp-samples/blob/main/data-engineering/ingestion/Read_Only_Ingestion_Connectors.ipynb), which routes BICC through AIDP's built-in `aidataplatform` format handler. ## When to use - User wants a **bulk** extract from Fusion (millions of rows, daily snapshots, full-table loads). - User mentions: "BICC", "Fusion bulk extract", "BI Cloud Connector", "PVO extract". - Live REST paging would be too slow (>50k rows or daily refresh). ## When NOT to use - For small/live REST queries → use [`aidp-fusion-rest`](../aidp-fusion-rest/SKILL.md). ## Prerequisites in the AIDP notebook 1. **AIDP-side prep (one-time, by an administrator):** an `EXTERNAL STORAGE` profile registered in the AIDP catalog pointing at the OCI Object Storage bucket BICC writes to. The user references it by name via `fusion.external.storage` — they don't supply OCI credentials in the notebook. 2. **Fusion-side requirement:** the Fusion user must have a BICC-administrator role (e.g. `BIA_ADMINISTRATOR_DUTY`). A regular Fusion REST user (Finance Manager persona) gets a 302 to IDCS instead of BICC JSON — confirmed live. 3. The PVO (Public View Object) name and its source schema (e.g. `ERP`). 4. Helpers on `sys.path`. ## Auth: HTTP Basic (Recommended path = AIDP `aidataplatform` format) ### Option A — AIDP built-in connector (recommended; matches official sample) ```python import os from oracle_ai_data_platform_connectors.rest.fusion import read_bicc_via_aidp_format df = read_bicc_via_aidp_format( spark=spark, fusion_service_url=os.environ["FUSION_BICC_BASE_URL"], username=os.environ["FUSION_BICC_USER"], # MUST have BICC privileges password=os.environ["FUSION_BICC_PASSWORD"], schema=os.environ["FUSION_BICC_SCHEMA"], # e.g. "ERP" datastore=os.environ["FUSION_BICC_PVO"], # the PVO name fusion_external_storage=os.environ["FUSION_BICC_EXTERNAL_STORAGE"], ) df.show(5) print("rows:", df.count()) ``` The AIDP format handler does the BICC trigger, polling, manifest read, and OCI Object Storage CSV materialization internally — the user just gets a Spark DataFrame. Equivalent verbatim invocation (same as the official Oracle sample): ```python df = ( spark.read.format("aidataplatform") .option("type", "FUSION_BICC") .option("fusion.service.url", os.environ["FUSION_BICC_BASE_URL"]) .option("user.name", os.environ["FUSION_BICC_USER"]) .option("password", os.environ["FUSION_BICC_PASSWORD"]) .option("schema", os.environ["FUSION_BICC_SCHEMA"]) .option("fusion.external.storage", os.environ["FUSION_BICC_EXTERNAL_STORAGE"]) .option("datastore", os.environ["FUSION_BICC_PVO"]) .load() ) ``` ### Option B — Custom REST trigger + manual Object Storage read (fallback) Only use this when the AIDP `aidataplatform` connector isn't available on the cluster, when you need a custom polling cadence, or when you want to inspect the `MANIFEST.MF` directly. NOT validated against the official sample — endpoint paths and response schema are best-effort and may need adjustment per Fusion version. ```python import os from oracle_ai_data_platform_connectors.auth import http_basic_session from oracle_ai_data_platform_connectors.rest.fusion import ( trigger_bicc_extract, read_bicc_csv_from_object_storage, ) session = http_basic_session( username=os.environ["FUSION_BICC_USER"], password=os.environ["FUSION_BICC_PASSWORD"], base_url=os.environ["FUSION_BICC_BASE_URL"], ) prefix = trigger_bicc_extract( session=session, base_url=os.environ["FUSION_BICC_BASE_URL"], offering=os.environ["FUSION_BICC_OFFERING"], poll_interval_seconds=30, timeout_seconds=3600, ) df = read_bicc_csv_from_object_storage( spark=spark, namespace=os.environ["OCI_NAMESPACE"], bucket=os.environ["OCI_BUCKET_BICC"], prefix=prefix, ) print("rows:", df.count()) ``` ## Gotchas - **BICC privileges** — Fusion user must hold a BICC-admin role. Without it, `/biacm/api/v[12]/*` endpoints 302-redirect to IDCS OAuth (HTTP Basic isn't honored). This is the #1 reason live tests fail. (Live-confirmed against the demo pod with `Casey.Brown` finance-mgr persona — every BICC endpoint redirected.) - **`fusion.external.storage` is a catalog-managed name**, not a URL. Set it up once via AIDP Catalog UI (or `oci aidataplatform` CLI), then reference by name. The user never types OCI namespace/bucket in the notebook for Option A. - **`schema` and `datastore`** — these are BICC concepts: `schema` = offering schema (`ERP`, `HCM`, etc.); `datastore` = PVO name (e.g. `FscmTopModelAM.AnalyticsServiceAM`). Get them from the BICC console under "Configure Cloud Extract". - **First extract is slow** — BICC builds a full snapshot. Subsequent runs are incremental. Plan for >5 min on the first call. - **Schema inference is slow on big CSVs** (Option B path). Option A's connector knows the schema in advance from the BICC metadata. ## References - Helpers: [scripts/oracle_ai_data_platform_connectors/rest/fusion.py](../../scripts/oracle_ai_data_platform_connectors/rest/fusion.py) - Official Oracle AIDP sample: [Read_Only_Ingestion_Connectors.ipynb](https://github.com/oracle-samples/oracle-aidp-samples/blob/main/data-engineering/ingestion/Read_Only_Ingestion_Connectors.ipynb) - BICC docs: https://docs.oracle.com/en/cloud/saas/applications-common/24a/oafsm/
Ver no GitHub