Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Linux üzerinde SQL Server 2016 (13.x)
SQL Server 2017 (14.x)
SQL Server 2019 (15.x)
Python tümleştirmesi, Bir Machine Learning Services (In-Database) yüklemesine Python seçeneğini eklediğinizde SQL Server 2017 ve sonraki sürümlerde kullanılabilir.
Uyarı
Şu anda bu makale yalnızca Linux için SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x) ve SQL Server 2019 (15.x) için geçerlidir.
SQL Server için Python çözümleri geliştirmek ve dağıtmak için Microsoft'un revoscalepy'sini ve diğer Python kitaplıklarını geliştirme iş istasyonunuzu yükleyin. Uzak SQL Server örneğinde de bulunan revoscalepy kitaplığı, her iki sistem arasında bilgi işlem isteklerini koordine eder.
Bu makalede, makine öğrenmesi ve Python tümleştirmesi için etkinleştirilmiş bir uzak SQL Server ile etkileşim kurabilmek için Python geliştirme iş istasyonu yapılandırmayı öğrenin. Bu makaledeki adımları tamamladıktan sonra, SQL Server'dakilerle aynı Python kitaplıklarına sahip olacaksınız. Ayrıca, yerel bir Python oturumundan SQL Server'da uzak bir Python oturumuna hesaplama göndermeyi de öğreneceksiniz.
Yüklemeyi doğrulamak için, bu makalede açıklandığı gibi yerleşik Jupyter Not Defterlerini kullanabilir veya kitaplıkları PyCharm'a veya normalde kullandığınız başka bir IDE'ye bağlayabilirsiniz .
Tip
Bu alıştırmaların video gösterimi için bkz. Jupyter Notebooks'tan SQL Server'da R ve Python'ı uzaktan çalıştırma.
Yaygın kullanılan araçlar
SQL'de yeni olan bir Python geliştiricisi veya Python ve veritabanı içi analiz konusunda yeni olan bir SQL geliştiricisi olmanız fark etmese de veritabanı içi analizin tüm özelliklerini kullanmak için hem Python geliştirme aracına hem de SQL Server Management Studio (SSMS) gibi bir T-SQL sorgu düzenleyicisine ihtiyacınız olacaktır.
Python geliştirmesi için, SQL Server tarafından yüklenen Anaconda dağıtımında paketlenen Jupyter Notebooks'u kullanabilirsiniz. Bu makalede, Sql Server'da Python kodunu yerel olarak ve uzaktan çalıştırabilmek için Jupyter Notebooks'u nasıl başlatabileceğiniz açıklanmaktadır.
SSMS, Python kodu içerenler de dahil olmak üzere SQL Server'da saklı yordamlar oluşturmak ve çalıştırmak için yararlı olan ayrı bir indirmedir. Jupyter Notebooks'ta yazdığınız neredeyse tüm Python kodları saklı yordama eklenebilir. SSMS ve ekli Python hakkında bilgi edinmek için diğer hızlı başlangıçları adım adım izleyebilirsiniz.
1 - Python paketlerini yükleme
Yerel iş istasyonları, Temel Python 3.5.2 dağıtımına sahip Anaconda 4.2.0 ve Microsoft'a özgü paketler de dahil olmak üzere SQL Server'da bulunanlarla aynı Python paketi sürümlerine sahip olmalıdır.
Yükleme betiği, Python istemcisine Microsoft'a özgü üç kitaplık ekler. Betik kurulumu gerçekleştirir:
- revoscalepy , veri kaynağı nesnelerini ve işlem bağlamını tanımlamak için kullanılır.
- makine öğrenmesi algoritmaları sağlayan microsoftml.
- azureml , tek başına sunucu bağlamıyla ilişkili işletimselleştirme görevleri için geçerlidir ve veritabanı içi analiz için sınırlı kullanımda olabilir.
Yükleme betiğini indirin. Aşağıdaki uygun GitHub sayfasında Ham dosyayı indir'i seçin.
https://aka.ms/mls-py Microsoft Python paketlerinin 9.2.1 sürümünü yükler. Bu sürüm varsayılan SQL Server örneğine karşılık gelir.
https://aka.ms/mls93-py Microsoft Python paketlerinin 9.3 sürümünü yükler.
Yükseltilmiş yönetici izinlerine sahip bir PowerShell penceresi açın ( Yönetici olarak çalıştır'a sağ tıklayın).
Yükleyiciyi indirdiğiniz klasöre gidin ve betiği çalıştırın. Kitaplıklar için bir klasör konumu belirtmek amacıyla
-InstallFolderkomut satırı bağımsız değişkenini ekleyin. Örneğin:cd {{download-directory}} .\Install-PyForMLS.ps1 -InstallFolder "C:\path-to-python-for-mls"
Yükleme klasörünü atlarsanız varsayılan değer olur %ProgramFiles%\Microsoft\PyForMLS.
Yüklemenin tamamlanması biraz zaman alır. İlerleme durumunu PowerShell penceresinde izleyebilirsiniz. Kurulum tamamlandığında, eksiksiz bir paket kümeniz vardır.
Tip
Windows üzerinde Python programları çalıştırma hakkında genel amaçlı bilgiler için Windows için Python SSS'yi öneririz.
2 - Yürütülebilir dosyaları bulma
PowerShell'de Python.exe, betikler ve diğer paketlerin yüklendiğini onaylamak için yükleme klasörünün içeriğini listeleyin.
Kök sürücüye gitmek için
cd \girin-InstallFolderve ardından önceki adımda belirttiğiniz yolu girin. Yükleme sırasında bu parametreyi atlarsanız, varsayılan değer olurcd %ProgramFiles%\Microsoft\PyForMLS.Yürütülebilir dosyaları listelemek için
dir *.exegiriniz. python.exe, pythonw.exeve uninstall-anaconda.exegörmeniz gerekir.
Birden çok Python sürümüne sahip sistemlerde, revoscalepy ve diğer Microsoft paketlerini yüklemek istiyorsanız bu belirli Python.exe kullanmayı unutmayın.
Uyarı
Yükleme betiği, bilgisayarınızdaki PATH ortam değişkenini değiştirmez; bu da yeni yüklediğiniz python yorumlayıcının ve modüllerin sahip olabileceğiniz diğer araçlar tarafından otomatik olarak kullanılamadığı anlamına gelir. Python yorumlayıcısını ve kitaplıklarını araçlara bağlama konusunda yardım için bkz. IDE yükleme.
3 - Jupyter Not Defterlerini Açma
Anaconda, Jupyter Notebooks içerir. Sonraki adım olarak bir not defteri oluşturun ve az önce yüklediğiniz kitaplıkları içeren bazı Python kodlarını çalıştırın.
Betikler klasöründeki Jupyter Not Defteri'ni açın, PowerShell isteminde, hala
%ProgramFiles%\Microsoft\PyForMLSdizinindeyken..\Scripts\jupyter-notebookVarsayılan tarayıcınızda,
https://localhost:8889/treeadresinde bir defter açılmalıdır.Başka bir başlangıç yolu da jupyter-notebook.exeçift tıklamaktır.
Yeni'yi ve ardından Python 3'i seçin.
Microsoft'a özgü kitaplıklardan birini yüklemek için komutunu girin
import revoscalepyve çalıştırın.Sürüm bilgilerini döndürmek için girin ve çalıştırın
print(revoscalepy.__version__). 9.2.1 veya 9.3.0'ı görmeniz gerekir. Bu sürümlerden birini revoscalepy'i sunucuda kullanabilirsiniz.Daha karmaşık bir deyim serisi girin. Bu örnek, yerel veri kümesi üzerinden rx_summary kullanarak özet istatistikleri oluşturur. Diğer işlevler örnek verilerin konumunu alır ve yerel bir .xdf dosyası için bir veri kaynağı nesnesi oluşturur.
import os from revoscalepy import rx_summary from revoscalepy import RxXdfData from revoscalepy import RxOptions sample_data_path = RxOptions.get_option("sampleDataDir") print(sample_data_path) ds = RxXdfData(os.path.join(sample_data_path, "AirlineDemoSmall.xdf")) summary = rx_summary("ArrDelay+DayOfWeek", ds) print(summary)
Aşağıdaki ekran görüntüsünde girişi ve çıkışın kısa olacak şekilde kırpılmış bir bölümü gösterilmektedir.
4 - SQL izinlerini alma
Betikleri çalıştırmak ve verileri karşıya yüklemek için SQL Server örneğine bağlanmak için veritabanı sunucusunda geçerli bir oturum açma izniniz olmalıdır. SQL oturum açma veya tümleşik Windows kimlik doğrulaması kullanabilirsiniz. Genellikle Windows tümleşik kimlik doğrulamasını kullanmanızı öneririz, ancak sql oturum açma bilgilerini kullanmak, özellikle betiğinizde dış verilere bağlantı dizeleri bulunduğunda bazı senaryolar için daha basittir.
En azından, kodu çalıştırmak için kullanılan hesabın çalıştığınız veritabanlarından okuma iznine ve ayrıca HERHANGI BIR HARİÇ BETIĞI YÜRÜT özel iznine sahip olması gerekir. Geliştiricilerin çoğu ayrıca saklı yordamlar oluşturmak ve eğitim verileri veya puanlanmış veriler içeren tablolara veri yazmak için izinlere ihtiyaç duyar.
Veritabanı yöneticisinden Python kullandığınız veritabanında hesabınız için aşağıdaki izinleri yapılandırmasını isteyin:
- Sunucuda Python çalıştırmak için HERHANGI BIR DıŞ BETIĞI YÜRÜT.
- db_datareader ayrıcalıkları, modeli eğitmek için kullanılan sorguları çalıştırmak için gereklidir.
- db_datawriter eğitim verilerini veya puanlanmış verileri yazmak için kullanılır.
- Saklı yordamlar, tablolar, işlevler gibi nesneler oluşturmak için db_owner. Ayrıca örnek ve test veritabanları oluşturmak için db_owner gerekir.
Kodunuz varsayılan olarak SQL Server ile yüklü olmayan paketler gerektiriyorsa, paketlerin örnekle birlikte yüklenmesi için veritabanı yöneticisiyle birlikte düzenleyin. SQL Server güvenli bir ortamdır ve paketlerin nereye yüklenebileceğine ilişkin kısıtlamalar vardır. Haklarınız olsa bile, paketlerin kodunuzun bir parçası olarak geçici olarak yüklenmesi önerilmez. Ayrıca, sunucu kitaplığına yeni paketler yüklemeden önce her zaman güvenlik etkilerini dikkatle göz önünde bulundurun.
5 - Test verileri oluşturma
Uzak sunucuda veritabanı oluşturma izinleriniz varsa, aşağıdaki kodu çalıştırarak bu makaledeki kalan adımlar için kullanılan Iris tanıtım veritabanını oluşturabilirsiniz.
5-1 - irissql veritabanını uzaktan oluşturma
import pyodbc
# creating a new db to load Iris sample in
new_db_name = "irissql"
connection_string = "Driver=SQL Server;Server=localhost;Database={0};Trusted_Connection=Yes;"
# you can also swap Trusted_Connection for UID={your username};PWD={your password}
cnxn = pyodbc.connect(connection_string.format("master"), autocommit=True)
cnxn.cursor().execute("IF EXISTS(SELECT * FROM sys.databases WHERE [name] = '{0}') DROP DATABASE {0}".format(new_db_name))
cnxn.cursor().execute("CREATE DATABASE " + new_db_name)
cnxn.close()
print("Database created")
5-2 - SkLearn'den Iris örneğini içeri aktarma
from sklearn import datasets
import pandas as pd
# SkLearn has the Iris sample dataset built in to the package
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
5-3 - Tablo oluşturmak ve Iris verilerini yüklemek için Revoscalepy API'lerini kullanma
from revoscalepy import RxSqlServerData, rx_data_step
# Example of using RX APIs to load data into SQL table. You can also do this with pyodbc
table_ref = RxSqlServerData(connection_string=connection_string.format(new_db_name), table="iris_data")
rx_data_step(input_data = df, output_file = table_ref, overwrite = True)
print("New Table Created: Iris")
print("Sklearn Iris sample loaded into Iris table")
6 - Uzak bağlantıyı test edin
Bu sonraki adımı denemeden önce, SQL Server örneği üzerinde izinleriniz olduğundan ve Iris örnek veritabanına yönelik bir bağlantı dizesine sahip olduğunuzdan emin olun. Veritabanı yoksa ve yeterli izinlere sahipseniz , bu satır içi yönergeleri kullanarak bir veritabanı oluşturabilirsiniz.
Bağlantı dizesini geçerli değerlerle değiştirin. Örnek kod "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;" kullanır, ancak kodunuz, örnek ismiyle birlikte uzak bir sunucuyu, veritabanı oturum açma bilgileriyle eşleşen bir kimlik bilgisi opsiyonunu belirtmelidir.
6-1 İşlev tanımlama
Aşağıdaki kod, sonraki bir adımda SQL Server'a göndereceği bir işlevi tanımlar. Yürütürken, iris veri kümesinin dağılım çizimlerini oluşturmak için uzak sunucudaki veri ve kitaplıkları (revoscalepy, pandas, matplotlib) kullanır. Tarayıcıda işlemek için .png bayt akışını Jupyter Notebooks'a geri döndürür.
def send_this_func_to_sql():
from revoscalepy import RxSqlServerData, rx_import
from pandas.tools.plotting import scatter_matrix
import matplotlib.pyplot as plt
import io
# remember the scope of the variables in this func are within our SQL Server Python Runtime
connection_string = "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;"
# specify a query and load into pandas dataframe df
sql_query = RxSqlServerData(connection_string=connection_string, sql_query = "select * from iris_data")
df = rx_import(sql_query)
scatter_matrix(df)
# return bytestream of image created by scatter_matrix
buf = io.BytesIO()
plt.savefig(buf, format="png")
buf.seek(0)
return buf.getvalue()
6-2 İşlevi SQL Server'a gönderme
Bu örnekte, uzak işlem bağlamını oluşturun ve ardından işlevin yürütülmesini rx_exec ile SQL Server'a gönderin. rx_exec işlevi, bir işlem bağlamını bağımsız değişken olarak kabul ettiğinden kullanışlıdır. Uzaktan yürütmek istediğiniz herhangi bir işlevin işlem bağlamı bağımsız değişkeni olmalıdır. rx_lin_mod gibi bazı işlevler bu bağımsız değişkeni doğrudan destekler. Desteklemeyen işlemler için rx_exec kullanarak kodunuzu uzak işlem bağlamında teslim edebilirsiniz.
Bu örnekte, SQL Server'dan Jupyter Notebook'a hiçbir ham veri aktarılmamalıdır. Tüm hesaplamalar Iris veritabanında gerçekleşir ve istemciye yalnızca görüntü dosyası döndürülür.
from IPython import display
import matplotlib.pyplot as plt
from revoscalepy import RxInSqlServer, rx_exec
# create a remote compute context with connection to SQL Server
sql_compute_context = RxInSqlServer(connection_string=connection_string.format(new_db_name))
# use rx_exec to send the function execution to SQL Server
image = rx_exec(send_this_func_to_sql, compute_context=sql_compute_context)[0]
# only an image was returned to my jupyter client. All data remained secure and was manipulated in my db.
display.Image(data=image)
Aşağıdaki ekran görüntüsünde giriş ve dağılım grafiği çıktısı gösterilmektedir.
7 - Araçlardan Python'ı başlatma
Geliştiriciler sık sık Python'ın birden çok sürümüyle çalıştığından kurulum, PATH'inize Python eklemez. Kurulum tarafından yüklenen Python yürütülebilir dosyasını ve kitaplıklarını kullanmak için, IDE'nizi hem revoscalepy hem de microsoftml ile birlikte sağlanan yoldaki Python.exe dosyasına bağlayın.
Komut satırı
Python.exe 'den %ProgramFiles%\Microsoft\PyForMLS (veya Python istemci kitaplığı yüklemesi için belirttiğiniz konumdan) çalıştırdığınızda, tam Anaconda dağıtımına ve Microsoft Python modüllerine(revoscalepy ve microsoftml) erişebilirsiniz.
-
%ProgramFiles%\Microsoft\PyForMLSgidin ve Python.exe'yi çalıştırın. - Etkileşimli yardımı açın:
help(). - Yardım istemine modülün adını yazın:
help> revoscalepy. Yardım, adı, paket içeriğini, sürümünü ve dosya konumunu döndürür. - Sürüm ve paket bilgilerini yardım> isteminde döndür:
revoscalepy. Yardımdan çıkmak için Birkaç kez Enter tuşuna basın. - Modülü içeri aktarma:
import revoscalepy.
Jupyter Not Defterleri
Bu makalede, revoscalepy yönelik işlev çağrılarını göstermek için yerleşik Jupyter Notebook'lar kullanılır. Bu araçta yeniyseniz, aşağıdaki ekran görüntüsünde parçaların nasıl bir araya geldiği ve bunların neden "yalnızca çalıştığı" gösterilmektedir.
Üst klasör %ProgramFiles%\Microsoft\PyForMLS Anaconda ve Microsoft paketlerini içerir. Jupyter Notebooks, Anaconda'da Betikler klasörünün altında bulunur ve Python yürütülebilir dosyaları Jupyter Notebooks ile otomatik olarak kaydedilir. Site paketleri altında bulunan paketler, veri bilimi ve makine öğrenmesi için kullanılan üç Microsoft paketi de dahil olmak üzere bir not defterine aktarılabilir.
Başka bir IDE kullanıyorsanız Python yürütülebilir dosyaları ve işlev kitaplıklarını aracınıza bağlamanız gerekir. Aşağıdaki bölümlerde yaygın olarak kullanılan araçlara yönelik yönergeler sağlanmaktadır.
Visual Studio
Visual Studio'da Python kullanıyorsanız, Microsoft Python paketlerini içeren bir Python ortamı oluşturmak için aşağıdaki yapılandırma seçeneklerini kullanın.
| Yapılandırma ayarı | value |
|---|---|
| Önek Yolu | %ProgramFiles%\Microsoft\PyForMLS |
| Yorumlayıcı yolu | %ProgramFiles%\Microsoft\PyForMLS\python.exe |
| Pencereli yorumlayıcı | %ProgramFiles%\Microsoft\PyForMLS\pythonw.exe |
Python ortamını yapılandırmayla ilgili yardım için bkz. Visual Studio'da Python ortamlarını yönetme.
PyCharm
PyCharm'da yorumlayıcıyı yüklü Python yürütülebilir dosyası olarak ayarlayın.
Yeni bir projede, Ayarlar'da Yerel Ekle'yi seçin.
%ProgramFiles%\Microsoft\PyForMLS\girin.
Artık revoscalepy, microsoftml veya azureml modüllerini içeri aktarabilirsiniz. Etkileşimli bir pencere açmak için Araçlar>Python Konsolu'nu da seçebilirsiniz.