Quinten blog Python

// Aan de slag met Python in SAS Viya: Een praktische handleiding

Als je Python al naast SAS 9 gebruikt, ben je waarschijnlijk gewend om het als een afzonderlijke tool te beschouwen. SAS Viya brengt daar verandering in. Python is niet langer alleen iets dat je van buitenaf aanroept; het is diep geïntegreerd in het platform, waardoor je de sterke punten van beide talen kunt combineren binnen één workflow.

In deze blog bespreken we drie belangrijke mogelijkheden om aan de slag te gaan met Python in SAS Viya:

  • Python-code uitvoeren vanuit SAS met behulp van PROC PYTHON

  • Begrijpen hoe Python-pakketten worden beheerd in SAS Viya

  • Rechtstreeks verbinding maken met Cloud Analytic Services (CAS) met behulp van het SWAT-pakket

Python uitvoeren met PROC PYTHON

Met PROC PYTHON kun je Python-code rechtstreeks uitvoeren vanuit een SAS-programma. Dit is vooral handig wanneer je een bestaande SAS-workflow wilt uitbreiden met Python-bibliotheken, zonder je SAS-omgeving te verlaten.

Een eenvoudig voorbeeld ziet er als volgt uit:

Python 1

Hoewel dit voorbeeld bewust eenvoudig is gehouden, zit de echte meerwaarde in het benutten van het uitgebreide ecosysteem van Python-bibliotheken:

Python 2

Doordat PROC PYTHON Python-code rechtstreeks vanuit een SAS-programma uitvoert, kun je bestaande SAS-workflows uitbreiden met Python-bibliotheken zonder je volledige workflow in Python te hoeven herschrijven. SAS-datasets kunnen met Python worden gedeeld en andersom, waardoor je eenvoudig bestaande SAS-code kunt combineren met Python-bibliotheken.

Python-pakketten beheren

In veel SAS Viya-omgevingen worden Python-pakketten beheerd via geïsoleerde Python-omgevingen in plaats van één gedeelde installatie. Elke omgeving bevat zijn eigen pakketten en afhankelijkheden, waardoor verschillende projecten verschillende versies van pakketten kunnen gebruiken zonder elkaar te beïnvloeden.

Voordat je pakketten installeert, moet SAS worden geconfigureerd om de juiste Python-omgeving te gebruiken. In het volgende voorbeeld wordt PROC PYTHON ingesteld op een virtuele omgeving met de naam projectx en worden alle pakketten geïnstalleerd die zijn gedefinieerd in een requirements.txt-bestand. Dit requirements.txt-bestand bevat simpelweg een overzicht van de Python-pakketten (en eventueel de bijbehorende versies) die voor een project nodig zijn.

Python 3


Laten we de belangrijkste zaken die hier gebeuren eens stap voor stap bekijken:

  • PROC_PYPATH verwijst SAS naar het Python-uitvoerbare bestand binnen de gewenste virtuele omgeving.

  • LD_LIBRARY_PATH zorgt ervoor dat de vereiste gedeelde bibliotheken voor die omgeving beschikbaar zijn.

  • PROC PYTHON restart start de ingebedde Python-interpreter opnieuw op, zodat de nieuwe omgeving wordt geladen.

  • pip install -r installeert alle pakketten die zijn vermeld in een projectspecifiek requirements.txt-bestand.

  • Tot slot schrijft pip freeze de exacte pakketversies terug naar hetzelfde bestand, waardoor een actuele momentopname van de omgeving wordt vastgelegd.

Deze aanpak biedt verschillende voordelen ten opzichte van het afzonderlijk installeren van pakketten:

  • Alle projectafhankelijkheden worden opgeslagen in één requirements.txt-bestand.
  • Nieuwe omgevingen kunnen met één enkele opdracht opnieuw worden aangemaakt.
  • Pakketversies blijven consistent tussen ontwikkel-, test- en productieomgevingen.
  • Wijzigingen in geïnstalleerde pakketten worden automatisch vastgelegd voor toekomstige implementaties.

Door je Python-omgeving te behandelen als onderdeel van je project, in plaats van als iets dat handmatig op de server wordt geconfigureerd, wordt je code eenvoudiger te reproduceren, te delen en uit te rollen. Dit is vooral waardevol in enterprise-omgevingen, waar meerdere projecten en teams verschillende pakketversies nodig kunnen hebben.

Verbinden met CAS via SWAT

Terwijl PROC PYTHON Python insluit binnen een SAS-programma, maakt het SWAT-pakket (Scripting Wrapper for Analytics Transfer) het mogelijk om Python rechtstreeks met CAS te laten communiceren. Dit is ideaal wanneer je voornamelijk in Python werkt, bijvoorbeeld in Jupyter Notebook of VS Code, maar wel gebruik wilt maken van de verwerkingskracht van de CAS-engine.

Laten we beginnen met het installeren van het SWAT-pakket:
pip install swat

Zodra het pakket is geïnstalleerd, zijn slechts enkele regels code nodig om verbinding te maken met CAS:

Python 4


In productieomgevingen is het echter gebruikelijk om te authenticeren met een OAuth-toegangstoken, in plaats van gebruikersnamen en wachtwoorden rechtstreeks in de code op te nemen:

Python 5


Nadat de verbinding tot stand is gebracht, kun je direct met CAS aan de slag: beschikbare tabellen in een specifieke caslib bekijken, een CAS-tabel laden, rijen uit die tabel ophalen of samenvattende statistieken berekenen:

Python 6


Houd er rekening mee dat deze bewerkingen in CAS worden uitgevoerd, in plaats van de volledige tabel naar je Python-sessie te laden.

Gegevens verplaatsen tussen pandas en CAS

Veel Python-gebruikers werken al met pandas. SWAT maakt het eenvoudig om gegevens uit te wisselen tussen pandas en CAS. Zo kun je bijvoorbeeld eenvoudig een pandas DataFrame naar CAS uploaden met de functie upload_frame:

Python 7


Gegevens uit CAS ophalen is net zo eenvoudig:

Python 8

Voor grote datasets is het doorgaans efficiënter om de gegevens in CAS te bewaren en alleen de resultaten op te halen die je nodig hebt voor analyse in Python.

Conclusie

Als je al bekend bent met SAS-programmering en Python, is aan de slag gaan met Python in SAS Viya eenvoudiger dan veel SAS-gebruikers verwachten.

PROC PYTHON is een logische keuze wanneer je bestaande workflows of SAS-programma's wilt uitbreiden met Python-code. Wanneer je rechtstreeks in Python ontwikkelt, biedt SWAT een krachtige interface naar CAS, zodat je data op ondernemingsniveau kunt analyseren zonder je vertrouwde ontwikkelomgeving te verlaten.

Samen stellen deze mogelijkheden je in staat om de flexibiliteit van Python te combineren met de schaalbaarheid en governance van SAS Viya.

// Contact

Notilyze B.V.
Stationsplein 45 A4.004
3013 AK Rotterdam
+31 (0)10 79 86 295
info@notilyze.com

// Stel een vraag