Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Sql Server 2017 (14.x) és újabb verziók
Felügyelt Azure SQL-példány
Az ötrészes oktatóanyag-sorozat harmadik részében megtanulhatja, hogyan hozhat létre funkciókat nyers adatokból egy Transact-SQL függvény használatával. Ezután meghívja ezt a függvényt egy SQL-ben tárolt eljárásból, hogy létrehozhasson egy táblát, amely tartalmazza a funkcióértékeket.
A szolgáltatásfejlesztés folyamata, a nyers adatokból származó szolgáltatások létrehozása kritikus lépés lehet a fejlett elemzési modellezésben.
Ebben a cikkben a következőket fogja megismerni:
- Egyéni függvény módosítása az utazási távolság kiszámításához
- A funkciók mentése másik egyéni függvény használatával
Az első részben telepítette az előfeltételeket, és visszaállította a mintaadatbázist.
A második részben megvizsgálta a mintaadatokat, és létrehozott néhány diagramot.
A negyedik részben betölti a modulokat, és meghívja a szükséges függvényeket a modell létrehozásához és betanítása egy SQL Server által tárolt eljárás használatával.
Az ötödik részben megtanulhatja, hogyan lehet üzembe helyezni a negyedik részben betanított és mentett modelleket.
A függvény definiálása
Az eredeti adatokban jelentett távolságértékek a jelentett mérőtávolságon alapulnak, és nem feltétlenül a földrajzi távolságot vagy a megtett távolságot jelölik. Ezért ki kell számítania a felvételi és a kiszállási pontok közötti közvetlen távolságot, az NYC Taxi adatkészlet forrásában elérhető koordináták felhasználásával. Ezt a Haversine képlet használatával teheti meg egy egyéni Transact-SQL függvényben.
Egy egyéni T-SQL-függvényt, az fnCalculateDistance függvényt fogja használni a távolság kiszámításához a Haversine képlet használatával, és egy második egyéni T-SQL-függvényt( fnEngineerFeatures) használva hozzon létre egy táblázatot, amely tartalmazza az összes funkciót.
Utazás távolságának kiszámítása az fnCalculateDistance használatával
Az fnCalculateDistance függvény szerepel a mintaadatbázisban. Szánjon egy percet a kód áttekintésére:
A Management Studióban bontsa ki a Programozhatóság, a Függvények , majd a Skaláris értékű függvények elemet.
Kattintson a jobb gombbal az fnCalculateDistance elemre, és válassza a Módosítás lehetőséget a Transact-SQL szkript új lekérdezési ablakban való megnyitásához.
Ennek az alábbihoz hasonlónak kell lennie:
CREATE FUNCTION [dbo].[fnCalculateDistance] (@Lat1 float, @Long1 float, @Lat2 float, @Long2 float) -- User-defined function that calculates the direct distance between two geographical coordinates RETURNS float AS BEGIN DECLARE @distance decimal(28, 10) -- Convert to radians SET @Lat1 = @Lat1 / 57.2958 SET @Long1 = @Long1 / 57.2958 SET @Lat2 = @Lat2 / 57.2958 SET @Long2 = @Long2 / 57.2958 -- Calculate distance SET @distance = (SIN(@Lat1) * SIN(@Lat2)) + (COS(@Lat1) * COS(@Lat2) * COS(@Long2 - @Long1)) --Convert to miles IF @distance <> 0 BEGIN SET @distance = 3958.75 * ATAN(SQRT(1 - POWER(@distance, 2)) / @distance); END RETURN @distance END GO
Notes:
- A függvény skaláris értékű függvény, amely egyetlen előre definiált adatértéket ad vissza.
- A függvény bemenetként a szélességi és hosszúsági értékeket veszi fel, amelyeket a felszállási és a lerakodási helyekről szerez be. A Haversine képlet radiánokká alakítja a helyeket, és ezekkel az értékekkel kiszámítja a két hely közötti mérföldekben kifejezett közvetlen távolságot.
A funkciók mentése az fnEngineerFeatures használatával
Ha egy olyan táblához szeretné hozzáadni a számított értéket, amely a modell betanításához használható, az fnEngineerFeatures egyéni T-SQL-függvényt fogja használni. Ez a függvény egy táblaértékű függvény, amely több oszlopot használ bemenetként, és több funkcióoszlopot tartalmazó táblát ad ki. Ennek a függvénynek a célja egy olyan funkciókészlet létrehozása, amely a modell készítéséhez használható. Az fnEngineerFeatures függvény meghívja a korábban létrehozott T-SQL-függvényt, az fnCalculateDistance függvényt a felvételi és a legördülő helyek közötti közvetlen távolság lekéréséhez.
Szánjon egy percet a kód áttekintésére:
CREATE FUNCTION [dbo].[fnEngineerFeatures] (
@passenger_count int = 0,
@trip_distance float = 0,
@trip_time_in_secs int = 0,
@pickup_latitude float = 0,
@pickup_longitude float = 0,
@dropoff_latitude float = 0,
@dropoff_longitude float = 0)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT
@passenger_count AS passenger_count,
@trip_distance AS trip_distance,
@trip_time_in_secs AS trip_time_in_secs,
[dbo].[fnCalculateDistance](@pickup_latitude, @pickup_longitude, @dropoff_latitude, @dropoff_longitude) AS direct_distance
)
GO
Annak ellenőrzéséhez, hogy működik ez a függvény, kiszámíthatja azoknak az utaknak a földrajzi távolságát, ahol a mért távolság 0 volt, de a felvételi és leadási helyek eltérőek voltak.
SELECT tipped, fare_amount, passenger_count,(trip_time_in_secs/60) as TripMinutes,
trip_distance, pickup_datetime, dropoff_datetime,
dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) AS direct_distance
FROM nyctaxi_sample
WHERE pickup_longitude != dropoff_longitude and pickup_latitude != dropoff_latitude and trip_distance = 0
ORDER BY trip_time_in_secs DESC
Mint látható, a mérő által jelentett távolság nem mindig felel meg a földrajzi távolságnak. Ezért fontos a funkciófejlesztés.
A következő részben megtudhatja, hogyan hozhat létre és taníthat be gépi tanulási modellt a Python használatával ezek az adatfunkciók.
Következő lépések
Ebben a cikkben a következőt találja:
- Egyéni függvény módosítása az utazási távolság kiszámításához
- A funkciók mentése másik egyéni függvény használatával