2010-03-03 30 views
9

SAS biçiminde birçok dosyam var ve bunları SAS dışındaki programlarda okuyabiliyorum. Temel SAS sistemi dışında bir şeyim yok. Her birini manuel olarak dönüştürebilirim, ancak otomatik olarak yapmanın bir yolunu seçerim.SAS veri kümesini nasıl okuyabilirim?

+0

tercih ediyorsanız csv onları dönüştürmek sağlayacak bir piton paketini şimdi mi var? Hangi programlama diliyle çalışıyor olursun? –

+0

Python kullanıyorum. Bir programı veya formatı belirtmedim çünkü yanıtları sınırlamak istemedim; Verileri bir DLL veya bir API aracılığıyla okumak için bir yol varsa, nasıl arayacağımı anlayabileceğime eminim. Ancak SAS'ın ek programlarını lisanslamadan, bunu yapmanın hiçbir yolunu bulamıyorum. –

+0

Her bir sayımı otomatik çözüm olarak dönüştürmek için bir SAS makrosu yazılır mı? –

cevap

6

Veri sunucusu olarak hareket etmek için çalışan bir SAS oturumuna sahip olmak. Ardından, SAS verilerine ODBC kullanarak erişebilirsiniz, bkz. SAS ODBC drivers guide.

yerel SAS ODBC sunucu yayınlanmasını sağlamak için yapmanız gerekenler:

  1. SAS ODBC sürücüleri kılavuzunda açıklanan adresinden SAS ODBC sunucu kurulumu tanımlayın. Aşağıdaki örnekte, "loclodbc" adıyla kurulan bir sunucuya bağlanacağım.
  2. , hizmetlerinizin dosyasında (C: \ WINDOWS \ system32 drivers \ etc \ hizmetlerin \) bir girdi ekleyin, örneğin:

    • loclodbc

    ... seti 9191/tcp port numarası (burada: 9191) böylece yerel kurulumunuza uyar. Hizmetin "loclodbc" adı, ODBC kurulumunda tanımlandığı şekilde sunucu adıyla eşleşmelidir. "Sunucu" teriminin, bilgisayarınızın fiziksel ana bilgisayar adıyla ilgisi olmadığını unutmayın.

SAS ODBC sunucunuz artık çalışmaya hazırdır, ancak atanmış veri kaynağı yoktur. Normalde bunu SAS ODBC kurulum sürecindeki "Kütüphaneler" sekmesinde ayarlayabilirsiniz, ancak "anında" veri kaynaklarını işaret etmek istediğinizden, bunu çıkarırız.

İstemci uygulamanızdan, artık SAS ODBC sunucusuna bağlanabilirsiniz, erişmek istediğiniz veri kaynaklarına işaret edebilir ve verileri getirebilirsiniz.

SAS, veri kaynaklarının işaret ettiği yol "LIBNAME" kavramı üzerinden gerçekleştirilir. Bir libname, veri topluluğunun mantıksal bir işaretçisidir. Mantıksal kolu "sasiodat":

Böylece

LIBNAME sasadhoc 'C:\sasdatafolder'; 

klasör "\ sasdatafolder Cı" tayin eder.

SAS içinden SAS veri tablosu dosyasındaki ikamet eden verilere erişimi istiyorsanız "C: \ sasdatafolder \ test.sas7bdat", böyle bir şey yapacağını:

LIBNAME sasadhoc 'C:\sasdatafolder'; 
PROC SQL; 
    CREATE TABLE WORK.test as 
    SELECT * 
    FROM sasadhoc.test 
    ; 
QUIT; 

Yani, bizim ihtiyacımız Bunu yapmak, SAS ODBC sunucumuzun istemci uygulamasından C: \ sasdatafolder'a bir libname atamasını söylemektir. DBCONINIT parametresini kullanarak, başlangıçta bu kaynak ayırma isteğini göndererek bunu yapabiliriz.

Bunu yapmak için örnek kod yaptım. Örnek kodum da BASE SAS dilinde yazılmıştır. SAS verisine erişmenin daha akıllıca yolları olduğu için, SAS'a ODBC üzerinden bağlanan SAS'dan ziyade, bu kod sadece bir örnek teşkil eder.

Sen kullanışlı bit alıp kullandığınız programlama ortamında kendi çözümünüzü oluşturmak mümkün olmalıdır ...

SAS ODBC bağlantısı örnek kod:

PROC SQL; 
    CONNECT TO ODBC(DSN=loclodbc DBCONINIT="libname sasadhoc 'c:\sasdatafolder'"); 
    CREATE TABLE temp_sas AS 
    SELECT * FROM CONNECTION TO ODBC(SELECT * FROM sasadhoc.test); 
QUIT; 

sihirli olur Kodun bir parçası olan "ODBC'YE BAĞLAYIN" bölümü, gerekli verilerin bulunduğu klasöre bir libname atar.

+0

Aslında, çalışan bir SAS oturumuna ihtiyacınız yoktur; ODBC sürücüsü sizin için otomatik olarak bir tane başlatır. Ancak, ODBC yapılandırmasını programsal olarak oluşturmanın kolay bir yolu yoktur, bu nedenle el ile yapılandırılmış olması gerekir. Bu bir problemdir, çünkü sadece rastgele bir veri kümesini yükleyemezsiniz. –

+0

Keyifle, muhtemelen "herhangi bir yerde, herhangi bir yerde bulunan" anlamına mı geliyor? Yoksa bir parametre olarak mı verilir? –

+0

Herhangi bir adla herhangi bir yerde. –

2

ADO, 'u kullanabileceğinizi düşünüyorum Daha fazla bilgi için SAS support site'a bakın.

Yasal Uyarı:

  1. Bir süre bu bakmadık
  2. Eminim bu ek lisans
  3. gerektirmediğini% 100 emin değilim ediyorum eğer Bu kullanarak Python
2

Ben http://www.oview.co.uk/dsread/ denedim hiç ama aradığınız şey olabilir yapabilirsiniz: "SAS7BDAT dosya biçiminde veri setleri ile çalışmak için basit bir komut satırı yardımcı programı" Ancak "Bu yazılım deneysel olarak kabul edilmeli ve doğru olması garanti edilmez. Kendi riskinizle kullanıyorsunuz. Sadece sıkıştırılmamış Windows formatındaki SAS7BDAT dosyaları üzerinde çalışacak."

3

Bir SAS-CSV dönüşüm programı oluşturabilirsiniz.

kaydet sas_to_csv.sas aşağıdaki:

proc export data=&sysparm 
    outfile=stdout dbms=csv; 
run; 

Ardından, aşağıdaki gibi bu programı, libname.dataset erişmek aramak istediğiniz varsayarak:

sas sas_to_csv -noterminal -sysparm "libname.dataset" 

SAS veri dağıtılması hedefleniyor CSV dönüştürülür Python'a. Python'da, program aracılığıyla "libname.dataset" parametrelerinin üretilmesi yeterince kolay olurdu.