Forum Discussion

icassiem's avatar
icassiem
Post Prodigy
1 month ago
Solved

ETL API Loop Code Example Help (POC)

Good day, i have been hit by engineering team rejecting my archetetcure and wants a POC and they preferred them developing the ETL to fabric using the client facing API and they incur the budget   ...
  • Yash8160's avatar
    1 month ago

    import requests
    import json
    import time
    from datetime import datetime


    # Configuration (POC only - do NOT hardcode in production)


    BASE_URL = "https://api.company.com" # paste url here

    TOKEN = "PASTE_YOUR_BEARER_TOKEN_HERE" # paste bearer token here

    HEADERS = {
    "Authorization": f"Bearer {TOKEN}",
    "Content-Type": "application/json"
    }


    # for 10 client
    clients = [
    "Client01",
    "Client02",
    "Client03",
    "Client04",
    "Client05",
    "Client06",
    "Client07",
    "Client08",
    "Client09",
    "Client10"
    ]

    # define Source
    sources = [
    "orders",
    "customers",
    "products",
    "inventory",
    "payments",
    "employees",
    "pricing",
    "transactions",
    "suppliers",
    "shipments"
    ]

    # ----------------------------------------------------
    # Simple logging list
    # ----------------------------------------------------

    log = []

    # ----------------------------------------------------
    # Main Loop
    # ----------------------------------------------------

    for client in clients:

    print(f"\nProcessing {client}")

    for source in sources:

    url = f"{BASE_URL}/{source}?client={client}"
    #starting time

    start = time.time()

    try:

    response = requests.get(
    url,
    headers=HEADERS,
    timeout=300
    )

    duration = round(time.time() - start, 2)

    response.raise_for_status()

    # Save raw JSON
    with open(f"{client}_{source}.json", "w") as f:
    json.dump(response.json(), f, indent=2)

    # logging Pipeline thing
    log.append({
    "Client": client,
    "Source": source,
    "Status": "Success",
    "DurationSeconds": duration,
    "Timestamp": str(datetime.now())
    })

    print(f"✔ {source} completed in {duration}s")

    except Exception as ex:

    duration = round(time.time() - start, 2)

    log.append({
    "Client": client,
    "Source": source,
    "Status": "Failed",
    "DurationSeconds": duration,
    "Error": str(ex),
    "Timestamp": str(datetime.now())
    })

    print(f"✖ {source} failed - {ex}")

    # Continue with next source
    continue

    # ----------------------------------------------------
    # Save execution log
    # ----------------------------------------------------

    with open("ExecutionLog.json", "w") as f:
    json.dump(log, f, indent=2)

    print("\nPOC Complete")

    this is sample code according your requirement you modify that. in this you get time impact for complete procees from calling api to store data into file

    if my approch is helpfull for you then mark as solution 

    if you have still confusion then you can contact me
    Thank you