De flesta träffarna för den här sökningen är verktyg som gör Python av SAS-källkod, och flera av dem gör det bra. Den här sidan börjar ett steg tidigare: om flytten över huvud taget är rätt för er kodbas, vad det kostar att verifiera resultatet och vad ni gör när svaret är nej.
Det finns fyra vägar ut ur en SAS-kodbas, inte två: lämna den till ett automatiskt verktyg, skriva om den för hand, köra SAS-programmen som de är på något som inte är SAS, eller låta den vara. Vilken som är rätt avgörs nästan helt av två frågor: hur mycket kod det finns, och om någon måste reproducera det som programmen gav förut. Allt nedan är vad varje väg kostar.
Python är oftare den bättre destinationen än en sida som den här brukar erkänna. Fyra villkor gör saken tydlig: kodbasen är liten nog att en person läser den på en vecka, teamet skriver redan Python dagligen, analysen ska ändå byggas om, och inget längre ner kräver att de nya siffrorna stämmer exakt med de gamla. Håller alla fyra är det billigare att skriva om än att lägga till ett kompatibilitetslager, och kvar blir kod som teamet kan underhålla utan att bära på ett andra språk.
Varje alternativ här är rätt svar för någon. Inget av dem är utan kostnad, och den dyra delen är aldrig syntaxen.
Webbverktyg, leverantörstjänster och stora språkmodeller tar .sas-källkod och lämnar tillbaka Python, oftast genom att avbilda DATA-steg på pandas och de vanliga procedurerna på statsmodels eller scikit-learn. För några hundra rader rättfram databearbetning är det en verklig genväg, och ni får en läsbar utgångspunkt på minuter. Räkningen kommer senare: varje rad av resultatet måste läsas av någon som kan båda språken.
Någon läser SAS-programmet, listar ut vad det var tänkt att göra och skriver det i Python. Det startar långsammare och är den enda vägen som slutar med kod som är formad som Python i stället för SAS i Python-kostym. Team som två år senare är nöjda med Python kom nästan alltid dit så här, oftast genom att låta det gamla programmet gå bredvid tills siffrorna stämde.
Vägen som jämförelsesidorna hoppar över. Jenner är en clean room-implementation av SAS 9.4-språket skriven i Rust: den läser SAS7BDAT-filer direkt och kör .sas-källkod som den står, så det finns ingen genererad kod att läsa igenom och inget andra språk för teamet att bära. Vad den inte gör är att täcka hela SAS-språket, och täckningen publiceras procedur för procedur så att ni kan kontrollera er egen innan ni förlitar er på den.
Att inte göra något är ett verkligt beslut och ofta det rätta. Om koden är stabil, miljön den kör i inte försvinner i år och ingen ber om en förändring, har den migrering ni inte gör bäst avkastning av allt på den här sidan. Ta upp frågan igen när ett plattformsbyte, en granskning eller ett rekryteringsproblem tvingar fram den.
Felläget hos en automatisk konvertering är inte syntaxfelet; det dyker upp första gången koden körs. Det är den tysta numeriska skillnaden. SAS fyller ut teckenvärden med blanksteg till höger och Python gör det inte, SAS räknar datum från den 1 januari 1960 medan pandas räknar från den 1 januari 1970, och ett MERGE i ett DATA-steg beter sig inte som en merge i pandas när nyckeln upprepas på båda sidor. Inget av det larmar. Det kommer ut ett tal som nästan stämmer, vilket är den värsta sortens fel. Därför är det verkliga priset en rad-för-rad-läsning av någon som behärskar båda språken, plus en period där gammalt och nytt körs sida vid sida på samma indata tills utdata stämmer överens — och det priset växer med mängden kod, inte med hur påhittig den är.
Er kod, era data och loggarna sida vid sida. Det är den jämförelsen som avgör, och ingen kan köra den åt er.
Starta gratis provperiod