Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för: SQL Server 2017 (14.x) och senare versioner 
Azure SQL Managed Instance
I den här snabbstarten får du lära dig hur du använder datastrukturer och datatyper när du använder Python i SQL Server Machine Learning Services, Azure SQL Managed Instance Machine Learning Services eller på SQL Server Big Data Clusters. Du får lära dig mer om att flytta data mellan Python och SQL Server och de vanliga problem som kan uppstå.
SQL-maskininlärning förlitar sig på Python Pandas-paketet , vilket är bra för att arbeta med tabelldata. Du kan dock inte skicka en skalär från Python till databasen och förvänta dig att den bara fungerar. I den här snabbstarten granskar du några grundläggande datastrukturdefinitioner för att förbereda dig för ytterligare problem som du kan stöta på när du skickar tabelldata mellan Python och databasen.
Begrepp att känna till i förväg är:
- En dataram är en tabell med flera kolumner.
 - En enda kolumn i en dataram är ett listliknande objekt som kallas för en serie.
 - Ett enda värde för en dataram kallas för en cell och nås via index.
 
Hur skulle du exponera det enskilda resultatet av en beräkning som en dataram, om en data.frame kräver en tabellstruktur? Ett svar är att representera det enskilda skalärvärdet som en serie, som enkelt konverteras till en dataram.
Anmärkning
När datum returneras använder Python i SQL DATETIME som har ett begränsat datumintervall på 1753-01-01(-53690) till 9999-12-31(2958463).
Förutsättningar
Du behöver följande förutsättningar för att köra den här snabbstarten.
En SQL-databas på någon av dessa plattformar:
- SQL Server Machine Learning Services. Information om hur du installerar finns i installationsguiden för Windows eller installationsguiden för Linux.
 - SQL Server-stordatakluster. Se hur du aktiverar Machine Learning Services på SQL Server Big Data Clusters.
 - Azure SQL Managed Instance Machine Learning Services. Mer information finns i Översikt över Azure SQL Managed Instance Machine Learning Services.
 
Ett verktyg för att köra SQL-frågor som innehåller Python-skript. Den här snabbstarten använder Azure Data Studio.
Skalärt värde som en serie
Det här exemplet utför en enkel matematik och konverterar en skalär till en serie.
En serie kräver ett index som du kan tilldela manuellt, som du ser här eller programmatiskt.
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) 'Eftersom serien inte har konverterats till en data.frame returneras värdena i fönstret Meddelanden, men du kan se att resultatet är i ett mer tabellformat.
Results
STDOUT message(s) from external script: 0.5 simple math example 1 0.5 dtype: float64Om du vill öka seriens längd kan du lägga till nya värden med hjälp av en matris.
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) 'Om du inte anger ett index genereras ett index som har värden som börjar med 0 och slutar med matrisens längd.
Results
STDOUT message(s) from external script: 0 0.5 1 2.0 dtype: float64Om du ökar antalet indexvärden , men inte lägger till nya datavärden , upprepas datavärdena för att fylla serien.
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
Konvertera serier till dataram
När du har konverterat det skalära matematiska resultatet till en tabellstruktur behöver du fortfarande konvertera dem till ett format som SQL-maskininlärning kan hantera.
Om du vill konvertera en serie till en data.frame anropar du pandas DataFrame-metoden .
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))Resultatet visas nedan. Även om du använder indexet för att hämta specifika värden från data.frame är indexvärdena inte en del av utdata.
Results
ResultValue 0,5 2 
Utmatningsvärden i en data.frame
Nu ska du mata ut specifika värden från två serier med matematiska resultat i en data.frame. Den första har ett index med sekventiella värden som genereras av Python. Den andra använder ett godtyckligt index med strängvärden.
I följande exempel hämtas ett värde från serien med hjälp av ett heltalsindex.
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 Kom ihåg att det automatiskt genererade indexet börjar vid 0. Prova att använda ett out-of-range-indexvärde och se vad som händer.
Hämta nu ett enda värde från den andra dataramen med hjälp av ett strängindex.
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 Om du försöker använda ett numeriskt index för att hämta ett värde från den här serien får du ett fel.
Nästa steg
Följ den här snabbstarten om du vill lära dig mer om att skriva avancerade Python-funktioner med SQL-maskininlärning: