Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2017 (14.x) i nowsze wersje
usługi Azure SQL Managed Instance
W tym przewodniku Szybki start dowiesz się, jak używać struktur danych i typów danych podczas korzystania z języka Python w usługach SQL Server Machine Learning Services, usługach Azure SQL Managed Instance Machine Learning Services lub w klastrach danych big data programu SQL Server. Dowiesz się więcej o przenoszeniu danych między językiem Python i programem SQL Server oraz o typowych problemach, które mogą wystąpić.
Uczenie maszynowe SQL opiera się na pakiecie pandas języka Python, który doskonale nadaje się do pracy z danymi tabelarycznymi. Nie można jednak przekazać wartości skalarnej w Pythonie do bazy danych i oczekiwać, że po prostu będzie działać. W tym przewodniku Szybki start zapoznasz się z kilkoma podstawowymi definicjami struktury danych, aby przygotować się do dodatkowych problemów, które można napotkać podczas przekazywania danych tabelarycznych między językiem Python i bazą danych.
Pojęcia, które należy znać z góry, obejmują:
- Ramka danych to tabela z wieloma kolumnami.
- Pojedyncza kolumna ramki danych jest obiektem przypominającym listę nazywanym serią.
- Pojedyncza wartość ramki danych jest nazywana komórką i jest uzyskiwana przez indeks.
Jak uwidocznić pojedynczy wynik obliczenia jako ramkę danych, jeśli ramka data.frame wymaga struktury tabelarycznej? Jedną z odpowiedzi jest reprezentowanie pojedynczej wartości skalarnej jako serii, która jest łatwo konwertowana na ramkę danych.
Uwaga / Notatka
Podczas zwracania dat język Python w języku SQL używa daty DATETIME z ograniczonym zakresem dat 1753-01-01(-53690) do 9999-12-31(2958463).
Wymagania wstępne
Aby uruchomić szybki start, potrzebne są następujące prerekwizyty.
Baza danych SQL na jednej z następujących platform:
- Sql Server Machine Learning Services. Aby zainstalować, zobacz Przewodnik instalacji systemu Windows lub Przewodnik instalacji systemu Linux.
- Klastry danych big data programu SQL Server. Zobacz, jak włączyć usługi Machine Learning Services w klastrach danych big data programu SQL Server.
- Azure SQL Managed Instance Machine Learning Services. Aby uzyskać informacje, zobacz Omówienie usług Azure SQL Managed Instance Machine Learning Services.
Narzędzie do uruchamiania zapytań SQL zawierających skrypty języka Python. W tym przewodniku Szybki start jest używany program Azure Data Studio.
Wartość skalarna jako seria
W tym przykładzie wykonuje proste działania matematyczne i przekształca skalar na serię.
Seria wymaga indeksu, który można przypisać ręcznie, jak pokazano tutaj lub programowo.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b print(c) s = pandas.Series(c, index =["simple math example 1"]) print(s) 'Ponieważ seria nie została przekonwertowana na ramkę data.frame, wartości są zwracane w oknie Komunikaty, ale widać, że wyniki są w bardziej tabelarycznym formacie.
Results
STDOUT message(s) from external script: 0.5 simple math example 1 0.5 dtype: float64Aby zwiększyć długość serii, możesz dodać nowe wartości przy użyciu tablicy.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b d = a*b s = pandas.Series([c,d]) print(s) 'Jeśli nie określisz indeksu, zostanie wygenerowany indeks zawierający wartości zaczynające się od 0 i kończący się długością tablicy.
Results
STDOUT message(s) from external script: 0 0.5 1 2.0 dtype: float64Jeśli zwiększysz liczbę wartości indeksu , ale nie dodasz nowych wartości danych , wartości danych będą powtarzane w celu wypełnienia serii.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' a = 1 b = 2 c = a/b s = pandas.Series(c, index =["simple math example 1", "simple math example 2"]) print(s) 'Results
STDOUT message(s) from external script: 0.5 simple math example 1 0.5 simple math example 2 0.5 dtype: float64
Konwertowanie serii na ramkę danych
Po przekonwertowaniu wyników matematycznych skalarnych na strukturę tabelarycznej nadal trzeba je przekonwertować na format, który może obsłużyć uczenie maszynowe SQL.
Aby przekonwertować serię na element data.frame, wywołaj metodę pandas DataFrame .
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd a = 1 b = 2 c = a/b d = a*b s = pandas.Series([c,d]) print(s) df = pd.DataFrame(s) OutputDataSet = df ' WITH RESULT SETS((ResultValue FLOAT))Poniżej przedstawiono wynik. Nawet jeśli używasz indeksu do pobierania określonych wartości z elementu data.frame, wartości indeksu nie są częścią danych wyjściowych.
Results
ResultValue 0,5 2
Wyprowadź wartości do obiektu data.frame
Teraz wyświetlisz określone wartości z dwóch serii wyników matematycznych w ramce data.frame. Pierwszy zawiera indeks wartości sekwencyjnych generowanych przez język Python. Drugi używa dowolnego indeksu wartości ciągu.
Poniższy przykład pobiera wartość z serii przy użyciu indeksu całkowitego.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd a = 1 b = 2 c = a/b d = a*b s = pandas.Series([c,d]) print(s) df = pd.DataFrame(s, index=[1]) OutputDataSet = df ' WITH RESULT SETS((ResultValue FLOAT))Results
ResultValue 2.0 Pamiętaj, że indeks generowany automatycznie zaczyna się od 0. Spróbuj użyć wartości indeksu poza zakresem i zobacz, co się stanie.
Teraz pobierz pojedynczą wartość z innej ramki danych przy użyciu indeksu ciągu.
EXECUTE sp_execute_external_script @language = N'Python' , @script = N' import pandas as pd a = 1 b = 2 c = a/b s = pandas.Series(c, index =["simple math example 1", "simple math example 2"]) print(s) df = pd.DataFrame(s, index=["simple math example 1"]) OutputDataSet = df ' WITH RESULT SETS((ResultValue FLOAT))Results
ResultValue 0,5 Jeśli spróbujesz użyć indeksu liczbowego, aby uzyskać wartość z tej serii, wystąpi błąd.
Dalsze kroki
Aby dowiedzieć się więcej na temat pisania zaawansowanych funkcji języka Python przy użyciu uczenia maszynowego SQL, wykonaj czynności opisane w tym przewodniku Szybki start: