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: SQL Server 2017 (14.x) ve sonraki sürümleri
Azure SQL Yönetimli Örnek
Bu hızlı başlangıç kılavuzunda, SQL Server Makine Öğrenimi Hizmetleri, Azure SQL Yönetilen Örnek Makine Öğrenimi Hizmetleri veya SQL Server Büyük Veri Kümeleri kullanarak bir dizi basit Python betiği çalıştıracaksınız. SQL Server örneğinde betiği çalıştırmak için sp_execute_external_script saklı yordamını nasıl kullanacağınızı öğreneceksiniz.
Önkoşullar
Bu hızlı başlangıcı çalıştırmak için aşağıdaki önkoşullara ihtiyacınız vardır.
Bu platformlardan birinde bir SQL veritabanı:
- SQL Server Machine Learning Services. Yüklemek için Windows yükleme kılavuzuna veya Linux yükleme kılavuzuna bakın.
- SQL Server 2019 Büyük Veri Kümeleri. SQL Server 2019 Büyük Veri Kümelerinde Makine Öğrenimi Hizmetlerini etkinleştirmeyi görün.
- Azure SQL Yönetilen Örneği Makine Öğrenimi Hizmetleri. Bilgi için bkz. Azure SQL Yönetilen Örnek Makine Öğrenimi Servisleri genel bakışı.
Python betikleri içeren SQL sorgularını çalıştırmaya yönelik bir araç. Bu hızlı başlangıçta Azure Data Studio kullanılır.
Basit bir betik çalıştırın
Python betiğini çalıştırmak için bunu sistem saklı yordamına bağımsız değişken olarak geçireceksiniz sp_execute_external_script. Bu sistem saklı yordamı, SQL makine öğrenmesi bağlamında Python çalışma zamanını başlatır, verileri Python'a geçirir, Python kullanıcı oturumlarını güvenli bir şekilde yönetir ve tüm sonuçları istemciye döndürür.
Aşağıdaki adımlarda, bu örnek Python betiğini veritabanınızda çalıştıracaksınız:
a = 1
b = 2
c = a/b
d = a*b
print(c, d)
Azure Data Studio'da SQL örneğine bağlı yeni bir sorgu penceresi açın.
Python betiğinin tamamını saklı yordamına
sp_execute_external_scriptgeçirin.Betik
@scriptbağımsız değişkeni aracılığıyla iletilir. Bağımsız değişken içindeki@scripther şey geçerli Bir Python kodu olmalıdır.EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b d = a*b print(c, d) 'Doğru sonuç hesaplanır ve Python
printişlevi sonucu İletiler penceresine döndürür.Şuna benzer bir şey olmalı.
Results
STDOUT message(s) from external script: 0.5 2
Merhaba Dünya betiğini çalıştırın
Tipik bir örnek betik, yalnızca "Hello World" dizesini veren betiktir. Aşağıdaki komutu çalıştırın.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'OutputDataSet = InputDataSet'
, @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([Hello World] INT));
GO
sp_execute_external_script saklı yordamına girişler şunlardır:
| Veri Girişi | Description |
|---|---|
| @language | çağrılacak dil uzantısını tanımlar, bu durumda Python |
| @script | Python çalışma zamanına geçirilen komutları tanımlar. Python betiğinizin tamamı, Unicode metin olarak bu argüman içinde çevrelenmelidir. Ayrıca metni nvarchar türünde bir değişkene ekleyebilir ve ardından değişkeni çağırabilirsiniz |
| @input_data_1 | sorgu tarafından döndürülen veriler, verileri veri çerçevesi olarak döndüren Python çalışma zamanına geçirilir |
| SONUÇ KÜMELERIYLE | yan tümcesi, SQL makine öğrenmesi için döndürülen veri tablosunun şemasını tanımlar ve veri türü için sütun adı olan int olarak "Hello World" ekler |
Komut aşağıdaki metni verir:
| Hello World |
|---|
| 1 |
Girişleri ve çıkışları kullanma
Varsayılan olarak, sp_execute_external_script giriş olarak tek bir veri kümesini kabul eder ve bu veri kümesini genellikle geçerli bir SQL sorgusu biçiminde sağlarsınız. Ardından çıkış olarak tek bir Python veri çerçevesi döndürür.
Şimdilik şunun varsayılan giriş ve çıkış değişkenlerini sp_execute_external_scriptkullanalım: InputDataSet ve OutputDataSet.
Test verilerinden oluşan küçük bir tablo oluşturun.
CREATE TABLE PythonTestData (col1 INT NOT NULL) INSERT INTO PythonTestData VALUES (1); INSERT INTO PythonTestData VALUES (10); INSERT INTO PythonTestData VALUES (100); GOSELECTTabloyu sorgulamak için deyimini kullanın.SELECT * FROM PythonTestDataResults
Aşağıdaki Python betiğini çalıştırın. deyimini kullanarak
SELECTtablodan verileri alır, Python çalışma zamanından geçirir ve verileri bir veri çerçevesi olarak döndürür.WITH RESULT SETSyan tümcesi, NewColName sütun adını ekleyerek SQL için döndürülen veri tablosunun şemasını tanımlar.EXECUTE sp_execute_external_script @language = N'Python' , @script = N'OutputDataSet = InputDataSet;' , @input_data_1 = N'SELECT * FROM PythonTestData;' WITH RESULT SETS(([NewColName] INT NOT NULL));Results
Şimdi giriş ve çıkış değişkenlerinin adlarını değiştirin. Varsayılan giriş ve çıkış değişkeni adları InputDataSet ve OutputDataSet'dir; aşağıdaki betik adları SQL_in ve SQL_out olarak değiştirir:
EXECUTE sp_execute_external_script @language = N'Python' , @script = N'SQL_out = SQL_in;' , @input_data_1 = N'SELECT 12 as Col;' , @input_data_1_name = N'SQL_in' , @output_data_1_name = N'SQL_out' WITH RESULT SETS(([NewColName] INT NOT NULL));Python'ın büyük/küçük harfe duyarlı olduğunu unutmayın. Python betiğinde kullanılan giriş ve çıkış değişkenlerinin (SQL_out, SQL_in)
@input_data_1_nameve@output_data_1_nameile tanımlanan adlarla, harf büyüklüğü dahil, uyum sağlaması gerekir.Tavsiye
Parametre olarak yalnızca bir giriş veri kümesi geçirilebilir ve yalnızca bir veri kümesi döndürebilirsiniz. Ancak Python kodunuzun içinden diğer veri kümelerini çağırabilir ve veri kümesine ek olarak diğer türlerin çıkışlarını döndürebilirsiniz. Output anahtar sözcüğünü sonuçlarla birlikte döndürmek için herhangi bir parametreye de ekleyebilirsiniz.
Giriş verileri olmadan (
@input_data_1boş olarak ayarlanmış) Python betiğini kullanarak da değerler oluşturabilirsiniz.Aşağıdaki betikte "hello" ve "world" metinleri görüntülenir.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd mytextvariable = pandas.Series(["hello", " ", "world"]); OutputDataSet = pd.DataFrame(mytextvariable); ' , @input_data_1 = N'' WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));Results
@script girişi kullanarak sorgu sonuçlarını elde edin" />
Tavsiye
Python, deyimleri gruplandırmak için öndeki boşlukları kullanır. Bu nedenle, yerleşik Python betiği önceki betikte olduğu gibi birden çok satıra yayıldığında, Python komutlarını SQL komutlarıyla uyumlu olacak şekilde girintili hale getirmeye çalışmayın. Örneğin, bu betik bir hata verecektir:
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import pandas as pd
mytextvariable = pandas.Series(["hello", " ", "world"]);
OutputDataSet = pd.DataFrame(mytextvariable);
'
, @input_data_1 = N''
WITH RESULT SETS(([Col1] CHAR(20) NOT NULL));
Python sürümünü denetleme
Sunucunuzda hangi Python sürümünün yüklü olduğunu görmek istiyorsanız aşağıdaki betiği çalıştırın.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import sys
print(sys.version)
'
GO
Python print işlevi sürümü İletiler penceresine döndürür. Aşağıdaki örnek çıktıda, bu örnekte Python sürüm 3.5.2'nin yüklü olduğunu görebilirsiniz.
Results
STDOUT message(s) from external script:
3.5.2 |Continuum Analytics, Inc.| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]
Python paketlerini listeleme
Microsoft, SQL Server 2016 (13.x), SQL Server 2017 (14.x) ve SQL Server 2019 (15.x) içinde Machine Learning Services ile önceden yüklenmiş bir dizi Python paketi sağlar. SQL Server 2022'de (16.x), istediğiniz özel Python çalışma zamanlarını ve paketlerini indirip yükleyebilirsiniz.
Sürüm dahil olmak üzere hangi Python paketlerinin yüklendiğinin listesini görmek için aşağıdaki betiği çalıştırın.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import pkg_resources
import pandas
dists = [str(d) for d in pkg_resources.working_set]
OutputDataSet = pandas.DataFrame(dists)
'
WITH RESULT SETS(([Package] NVARCHAR(max)))
GO
Liste Python'dandır pkg_resources.working_set ve veri çerçevesi olarak SQL'e döndürülür.
Sonraki Adımlar
SQL makine öğrenmesinde Python kullanırken veri yapılarını kullanmayı öğrenmek için şu hızlı başlangıcı izleyin: