Toolkit · Self-Service Conversion

Migrare da SAS con i propri agenti di coding

Le Alchemist Skills e l'Alchemist API portano la conversione deterministica da SAS a PySpark dentro l'agente di coding già in uso; un server MCP è in sviluppo. È lo stesso motore alla base delle migrazioni enterprise su Databricks.

Video: conversione da SAS a PySpark da un agente di coding con una skill di Alchemist
In azione

SAS in ingresso. PySpark in uscita.

L'agente chiede. Alchemist scompone il codice SAS in un albero sintattico e lo riscrive, con lo stesso output ogni volta, qualunque sia l'agente che ha fatto la richiesta.

SAS orders.sas
data work.big_orders;
  set sales.orders;
  where amt > 1000;
  tier = 'Key';
  net = amt * 0.9;
run;

proc sql;
  create table work.by_region as
  select region, sum(net) as net
  from work.big_orders
  group by region;
quit;
PySpark orders.py
# Converted by Alchemist
from pyspark.sql import functions as F

big_orders = (
  spark.table("sales.orders")
  .filter(F.col("amt") > 1000)
  .withColumn("tier", F.lit("Key"))
  .withColumn("net", F.col("amt") * 0.9)
)

by_region = (
  big_orders.groupBy("region")
  .agg(F.sum("net").alias("net"))
)
by_region.createOrReplaceTempView(
  "by_region"
)

Stesso motore, stesso PySpark, che il codice giri su Databricks, Snowflake o Microsoft Fabric. Gli agenti sono una delle vie d'accesso al toolkit di migrazione da SAS a PySpark, che analizza anche il patrimonio SAS e automatizza la migrazione intorno alla conversione.

Il problema

Perché la migrazione manuale non scala?

Con migliaia di programmi SAS, tre fattori limitano una riscrittura manuale: il tempo, la coerenza quando il lavoro passa per molte mani e il numero ridotto di persone in grado di svolgerlo. Un motore deterministico interviene su tutti e tre.

  1. Tempo

    Una riscrittura manuale del codice SAS si misura in mesi, e gran parte di quel tempo va in traduzione ripetitiva anziché in progettazione.

  2. Coerenza

    Ogni sviluppatore traduce in modo leggermente diverso e, su centinaia di programmi, queste differenze si sommano fino a far derivare la logica.

  3. Chi può partecipare

    Quando a convertire possono essere solo gli ingegneri, i team di business e di analytics devono aspettare il proprio turno. Con gli agenti possono gestire in autonomia il proprio perimetro.

Come funziona

L'agente dialoga con Alchemist

Si chiede all'agente di coding di convertire il codice SAS. L'agente delega il lavoro ad Alchemist tramite una skill che richiama l'Alchemist API. Il codice convertito torna nel notebook per revisione, rifinitura ed esecuzione. La conversione resta deterministica; l'agente si limita a orchestrarla.

  1. 1 · L'agenteDatabricks Genie, Snowflake Cortex, Microsoft Copilot, Claude Code
  2. 2 · AlchemistSkill → Alchemist APIapi.getalchemist.io
  3. 3 · Il notebookRevisione, rifinitura, esecuzione
Compatibile con lo stack in uso

Con il proprio agente

Ciascuno di questi agenti pilota Alchemist tramite Skills e API, sia in locale sia nella piattaforma cloud. Un server MCP è in sviluppo: così anche qualsiasi client MCP potrà pilotare una conversione.

  • Databricks Genie
  • Snowflake Cortex
  • Microsoft Copilot
  • Claude Code
  • Qualsiasi client MCP (in sviluppo)
Deployment

Cloud o air-gapped, a scelta

Le conversioni possono passare dal servizio in hosting di Alchemist, oppure l'intero stack può essere distribuito con Docker all'interno della propria rete. Stesso motore, stesso output.

Alchemist Cloud

L'agente si collega al servizio in hosting tramite Internet pubblico. Nulla da installare; i dettagli di connessione sono nell'account Alchemist.

api.getalchemist.io

Air-gapped (Docker)

Alchemist viene distribuito nella propria rete privata. Controllo completo; il codice non esce dal proprio ambiente.

docker load -i alchemist.tar
Per iniziare

Configurare le Alchemist Skills per il team

È possibile registrarsi alla prova gratuita o consultare la documentazione. In alternativa, basta indicarci quale agente e quale piattaforma si utilizzano: suggeriremo la configurazione adatta.