Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2017 (14.x) a novější verze
Azure SQL Managed Instance
V tomto rychlém startu se dozvíte, jak používat datové struktury a datové typy při použití Pythonu ve službách SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services nebo v clusterech s velkými objemy dat SQL Serveru. Dozvíte se o přesouvání dat mezi Pythonem a SQL Serverem a o běžných problémech, ke kterým může dojít.
Strojové učení SQL využívá balíček Pandas Pythonu, který je skvělý pro práci s tabulkovými daty. Do databáze ale nemůžete předat skalár z Pythonu a očekávat, že bude fungovat. V tomto rychlém startu si projdete některé základní definice datové struktury, abyste se připravili na další problémy, se kterými se můžete setkat při předávání tabulkových dat mezi Pythonem a databází.
Mezi koncepty, které je potřeba znát předem, patří:
- Datový rámec je tabulka s více sloupci.
- Jeden sloupec datového rámce je objekt podobný seznamu označovaný jako řada.
- Jedna hodnota datového rámce se nazývá buňka a je přístupná indexem.
Jak byste zpřístupnili jediný výsledek výpočtu jako datový rámec, pokud datový rámec vyžaduje tabulkovou strukturu? Jednou z odpovědí je znázornění jedné skalární hodnoty jako řady, která se snadno převede na datový rámec.
Poznámka:
Při vracení kalendářních dat python v SQL používá dateTIME s omezeným rozsahem dat 1753-01-01(-53690) až 9999-12-31(2958463).
Požadavky
Ke spuštění tohoto rychlého startu potřebujete následující požadavky.
Databáze SQL na jedné z těchto platforem:
- služby pro strojové učení serveru SQL. Pokud ho chcete nainstalovat, přečtěte si průvodce instalací Windows nebo průvodce instalací Linuxu.
- Clustery SQL Serveru pro velké objemy dat Podívejte se, jak povolit službu Machine Learning Services v clusterech s velkými objemy dat SQL Serveru.
- Azure SQL Managed Instance Machine Learning Services Informace najdete v přehledu služby Azure SQL Managed Instance Machine Learning Services.
Nástroj pro spouštění dotazů SQL, které obsahují skripty Pythonu. V tomto rychlém startu se používá Azure Data Studio.
Skalární hodnota jako řada
Tento příklad provede několik jednoduchých matematických operací a převede skalár na řadu.
Řada vyžaduje index, který můžete přiřadit ručně, jak je znázorněno zde, nebo programově.
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) 'Protože řady nebyly převedeny na data.frame, vrátí se hodnoty v okně Zprávy, ale můžete vidět, že výsledky jsou ve více tabulkovém formátu.
Results
STDOUT message(s) from external script: 0.5 simple math example 1 0.5 dtype: float64Pokud chcete zvětšit délku řady, můžete přidat nové hodnoty pomocí pole.
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) 'Pokud nezadáte index, vygeneruje se index, který obsahuje hodnoty začínající hodnotou 0 a končící délkou pole.
Results
STDOUT message(s) from external script: 0 0.5 1 2.0 dtype: float64Pokud zvýšíte počet hodnot indexu , ale nepřidáte nové datové hodnoty, datové hodnoty se opakují, aby vyplnily řadu.
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
Převod řad na datový rámec
Po převodu skalárních matematických výsledků na tabulkovou strukturu je stále potřeba je převést na formát, který dokáže strojové učení SQL zpracovat.
Chcete-li převést sérii na DataFrame, zavolejte metodu pandas.
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))Výsledek je uvedený níže. I když index použijete k získání konkrétních hodnot z data.frame, hodnoty indexu nejsou součástí výstupu.
Results
ResultValue 0,5 2
Výstupní hodnoty do data.frame
Teď vypíšete konkrétní hodnoty ze dvou řad matematických výsledků v datovém rámci. První má index sekvenčních hodnot vygenerovaných Pythonem. Druhý používá libovolný index řetězcových hodnot.
Následující příklad získá hodnotu z řady pomocí celočíselného indexu.
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 Nezapomeňte, že automaticky vygenerovaný index začíná na 0. Zkuste použít hodnotu indexu mimo rozsah a podívejte se, co se stane.
Teď získejte jednu hodnotu z druhého datového rámce pomocí řetězcového indexu.
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 Pokud se pokusíte použít číselný index k získání hodnoty z této řady, zobrazí se chyba.
Další kroky
Pokud se chcete dozvědět o psaní pokročilých funkcí Pythonu pomocí strojového učení SQL, postupujte podle tohoto rychlého startu: