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 2016 (13.x) a novější verze
Azure SQL Managed Instance
Ve třetí části této pětidílné série kurzů se naučíte vytvářet funkce z nezpracovaných dat pomocí funkce Transact-SQL. Potom tuto funkci zavoláte z uložené procedury SQL a vytvoříte tabulku obsahující hodnoty funkcí.
V tomto článku:
- Úprava vlastní funkce pro výpočet vzdálenosti jízdy
- Uložení funkcí pomocí jiné vlastní funkce
V první části jste nainstalovali požadavky a obnovili ukázkovou databázi.
Ve druhé části jste zkontrolovali ukázková data a vygenerovali několik grafů.
Ve čtvrté části načtete moduly a zavoláte potřebné funkce k vytvoření a trénování modelu pomocí uložené procedury SQL Serveru.
V 5. části se dozvíte, jak zprovoznit modely, které jste natrénovali a uložili ve čtvrté části.
V 5. části se dozvíte, jak zprovoznit modely, které jste natrénovali a uložili ve čtvrté části.
Informace o technice funkcí
Po několika kolech zkoumání dat jste shromáždili některé poznatky z dat a jste připraveni přejít k technikám funkcí. Tento proces vytváření smysluplných funkcí z nezpracovaných dat je důležitým krokem při vytváření analytických modelů.
V této datové sadě jsou hodnoty vzdálenosti založené na hlášené vzdálenosti měřiče a nemusí nutně představovat zeměpisnou vzdálenost nebo skutečnou vzdálenost, která se pohybuje. Proto budete muset vypočítat přímou vzdálenost mezi vyzvednutím a odkládacími body pomocí souřadnic dostupných ve zdrojové datové sadě taxi NYC. Můžete to provést pomocí vzorce Haversine ve vlastní funkci Transact-SQL.
K výpočtu vzdálenosti pomocí vzorce Haversine použijete jednu vlastní funkci T-SQL fnCalculateDistance a k vytvoření tabulky obsahující všechny funkce použijete druhou vlastní funkci T-SQL fnEngineerFeatures.
Celkový proces je následující:
Vytvoření funkce T-SQL, která provádí výpočty
Zavolejte funkci pro vygenerování dat vlastnosti
Uložení dat funkcí do tabulky
Výpočet vzdálenosti jízdy pomocí funkce fnCalculateDistance
Funkce fnCalculateDistance by měla být stažena a registrována s SQL Serverem v rámci přípravy na tento kurz. Projděte si kód za minutu.
V aplikaci Management Studio rozbalte možnost Programovatelnost, rozbalte funkce a potom funkce vracející skalární hodnoty.
Klikněte pravým tlačítkem na fnCalculateDistance a výběrem možnosti Upravit otevřete skript Transact-SQL v novém okně dotazu.
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 GOFunkce je skalární funkce, která vrací jednu datovou hodnotu předdefinovaného typu.
Přebírá hodnoty zeměpisné šířky a délky jako vstupní hodnoty získané z umístění vyzvednutí a místa vysazení. Vzorec Haversine převede umístění na radiány a pomocí těchto hodnot vypočítá přímou vzdálenost mezi těmito dvěma umístěními.
Generování funkcí pomocí fnEngineerFeatures
Pokud chcete přidat vypočítané hodnoty do tabulky, kterou je možné použít k trénování modelu, použijete jinou funkci fnEngineerFeatures. Nová funkce volá dříve vytvořenou funkci T-SQL fnCalculateDistance, aby získala přímou vzdálenost mezi umístěními vyzvednutí a odkládacími místy.
Chvíli si projděte kód vlastní funkce T-SQL , fnEngineerFeatures, který by měl být vytvořen pro vás jako součást přípravy tohoto názorného postupu.
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 ) GOTato tabulková funkce přijímá více sloupců jako vstupy a poskytuje tabulku s více sloupci funkcí.
Účelem této funkce je vytvořit nové funkce pro použití při vytváření modelu.
Pokud chcete ověřit, že tato funkce funguje, použijte ji k výpočtu zeměpisné vzdálenosti pro tyto výlety, ve kterých byla měřená vzdálenost 0, ale umístění vyzvednutí a odkládacích míst se liší.
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 DESCJak vidíte, vzdálenost hlášená měřičem vždy neodpovídá zeměpisné vzdálenosti. Proto je inženýrství vlastností tak důležité. Tyto vylepšené datové funkce můžete použít k trénování modelu strojového učení pomocí jazyka R.
Další kroky
V tomto článku:
- Úprava vlastní funkce pro výpočet vzdálenosti jízdy
- Uložili jsme funkce pomocí jiné vlastní funkce.