SAS USER FORUM USER FORUM SAS Viya och öppenhet en gemomgång av LUA-, Java-, Python- och REST-gränssnitten mot SAS Viya
Om presentatören Jonas Wetterberg har arbetat som seniorkonsult på SAS i snart 10 år där han både har implementerat färdiga SAS-lösningar och utvecklat nya lösningar baserade på SAS plattformen åt kunder inom ett flertal branscher. Just nu fokuserar han på risklösningar med speciellt fokus på SAS ramverk för IFRS9 regelverket. Öppna system har länge varit ett intresse och då han även har kunskap om andra programmeringsspråk än SAS ser Jonas fram mot att testa nya öppna gränssnitt i skarpa kundprojekt.
Agenda Resan mot SAS Viya Öppenhet i SAS Pyton, Lua och Java REST Ställ gärna frågor under tiden
Resan mot SAS Viya 2010 Development Timelines SAS High-Performance Architecture 2011 2013 SAS In-Memory Analytics Server SAS 3 rd Generation Massively Parallel Architecture
Öppenhet i SAS Viya Open source jämfört med öppenhet Varför? Alla programmerare programmerar inte i SAS Respektera kunders val av programmeringsspråk Vi vill vara tillgänglig och inkluderande Varför nu? Kunder och användare vill använda andra programmeringsspråk än SAS Ge möjlighet till att använda olika programmeringsspråk och fortfarande utnyttja SAS plattformens analytiska kapacitet Starkt önskemål från kunder, användare och partners
Parallel & Serial, Pub / Sub, Web Services, MQs SAS Viya arkitektur Source-based Engines In-Stream Customer Intelligence Analytics In-Cloud In-Hadoop In-Database Cloud Analytics Services (CAS) In-Memory Engine UAA UAA UAA Data Source Mgmt Folders etc. Microservices BI GUIs CAS Mgmt Log Analytics GUIs Data Mgmt GUIs Query Gen Env Mgr Model Mgmt Audit Solutions APIs Risk Management! Fraud and Security Intelligence Business Visualization Data Management Platforms Infrastructures
Client Side Packages
Client packages Språk Nerladdningslänk Exemepelkod https://github.com/sassoftware/python-swat In [1]: import swat https://support.sas.com/downloads/package.h tm?pid=1975 > swat = require 'swat' https://support.sas.com/downloads/package.h tm?pid=1976 import com.sas.cas.casclient; import com.sas.cas.casclientinterface; import com.sas.cas.casactionresults; import com.sas.cas.casvalue; eller import com.sas.cas.*;
Skapa en session mot CAS
Python conn = swat.cas('cas.mycompany.com', 5570, 'username', 'password')
Lua conn = swat.cas{'cas.mycompany.com', 5570, 'username', 'password'}
Java CASClientInterface conn = new CASClient( 'cas.mycompany.com', 5570, 'username', 'password );
Varje session för ett unikt ID CAS Server Session 1 Session 2 Session 3
CAS Action
CAS Action Submit CAS Action Return Action Results Visual Analytics Visual Statistics Visual Investigator CAS-Enabled Procedures: TREESPLIT, LOGSELECT, GENSELECT
Resultat från CAS JSONs Python dataframes Lua tables CASActionResults<CASValue>
CAS Action - Python sess = CAS(cashost, casport, authinfo=casauth, caslib="casuser") Skapa en session sess.loadactionset(actionset="table") Ladda actionset Använd actionset if not sess.table.tableexists(table=indata).exists:
Demo - Python
Språk Ptyhon Lua Java Ladda och använda actionset (Givet att man redan har en CAS session) Exempelkod conn.loadactionset('summary') conn.summary(table='cars') conn:loadactionset{actionset='summary'} conn:summary{table='cars'} client.loadactionset(null, 'summary'); Castable castable = new Castable(); castable.setname("cars"); summary1.settable(castable); CASActionResults<CASValue> results = summary1.invoke();
REST (Representational State Transfer)
Varför REST Inte begränsat till något programmeringsspråk Vanligt och populärt gränssnitt Varje resurs är unikt adresserbar enligt en gemensam standard (URI). Alla resurser har ett gemensamt gränssnitt för att överföra kommandon mellan klient och server. Detta består av: Grundläggande kommandon för att interagera med resurser baserade på de verb som är angivna i HTTP-standarden: POST, GET, PUT och DELETE. En uppsättning innehållstyper baserade på MIME-typer. Varje resurs kan erhållas i ett av flera representationsformat.
Exempel på REST anropp URI Verb Action /Product GET Hämtar en lista med alla produkter /Product POST Skapar en ny produkt /Product/{ProductID} GET Returnerar en produkt /Product/{ProductID} PUT Uppdaterar en produkt /Product/{ProductID} DELETE Tar bort en produkt /ProductGroup/{ProductG roupid} GET Returnerar en produktgrupp Exempel från Wikipedia
REST mot CAS /cas Information om CAS-server, skapa sessioner och begär exekvering av actions /system Systeminformation om CAS-servern /grid Information om klustret som exekverar CAS
REST exempel mot CAS GET cas.mycompany.com:[port]/cas/nodes POST cas.mycompany.com:[port]/cas/actions/summary?table=cars&inputs=ms RP Skapa en session via curl curl -v -u cas:lnxsas -X PUT http://pdcesx03127:8777/cas/sessions
Sammanfattning SAS Viya plattformen är en öppen för Ett flertal programmeringsspråk, såsom LUA, Python och Java Via ett REST-api Öppenhet en medveten strategi för SAS Datasteget fungerar fortfarande i SAS Viya
SAS USER FORUM Tack för att ni har lyssnat! jonas.wetterberg@sas.com Mer information finns även på: developer.sas.com