Megosztás a következőn keresztül:


Python-oktatóanyag: Adatszolgáltatások létrehozása a T-SQL használatával

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:

  1. A Management Studióban bontsa ki a Programozhatóság, a Függvények , majd a Skaláris értékű függvények elemet.

  2. 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