Fuzzy Lookup Transformation
gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory
Fuzzy Lookup-omvandlingen utför datarensningsuppgifter som att standardisera data, korrigera data och tillhandahålla saknade värden.
Notera
Mer detaljerad information om Fuzzy Lookup-omvandlingen, inklusive prestanda- och minnesbegränsningar, finns i vitboken Fuzzy Lookup and Fuzzy Grouping in SQL Server Integration Services 2005.
Fuzzy Lookup-omvandlingen skiljer sig från Lookup-transformationen genom sin funktion av suddig matchning. Uppslagstransformeringen använder en equi-join för att hitta matchande poster i referenstabellen. Den returnerar poster med minst en matchande post och returnerar poster utan matchande poster. Fuzzy Lookup-omvandlingen använder däremot fuzzy-matchning för att returnera en eller flera nära matchningar i referenstabellen.
En Fuzzy Lookup-transformering följer ofta en sökningstransformering i ett paketdataflöde. Först försöker uppslagstransformeringen hitta en exakt matchning. Om det misslyckas ger Fuzzy Lookup-transformeringen nära matchningar från referenstabellen.
Omvandlingen behöver åtkomst till en referensdatakälla som innehåller de värden som används för att rensa och utöka indata. Referensdatakällan måste vara en tabell i en SQL Server-databas. Matchningen mellan värdet i en indatakolumn och värdet i referenstabellen kan vara en exakt matchning eller en fuzzy-matchning. Omvandlingen kräver dock att minst en kolumnmatchning konfigureras för fuzzy-matchning. Om du bara vill använda exakt matchning använder du uppslagstransformeringen i stället.
Den här omvandlingen har en indata och en utdata.
Endast indatakolumner med datatyperna DT_WSTR och DT_STR kan användas i fuzzy-matchning. Exakt matchning kan använda valfri DTS-datatyp förutom DT_TEXT, DT_NTEXToch DT_IMAGE. Mer information finns i Integration Services-datatyper. Kolumner som deltar i kopplingen mellan indata och referenstabellen måste ha kompatibla datatyper. Det är till exempel giltigt att koppla en kolumn med datatypen DTS DT_WSTR till en kolumn med SQL Server nvarchar datatyp, men ogiltig för att koppla en kolumn med DT_WSTR datatypen till en kolumn med int datatyp.
Du kan anpassa den här omvandlingen genom att ange den maximala mängden minne, algoritmen för radjämförelse och cachelagring av index och referenstabeller som transformeringen använder.
Mängden minne som fuzzy Lookup-transformering använder kan konfigureras genom att ange den anpassade egenskapen MaxMemoryUsage. Du kan ange antalet megabyte (MB) eller använda värdet 0, vilket gör att omvandlingen kan använda en dynamisk mängd minne baserat på dess behov och det tillgängliga fysiska minnet. Den anpassade egenskapen MaxMemoryUsage kan uppdateras genom ett egenskapsuttryck när paketet laddas. Mer information finns i Uttryck för Integration Services (SSIS), Använd egenskapsuttryck i paket, och Anpassade Transformeringsegenskaper.
Kontroll av fuzzymatchningsbeteende
Fuzzy Lookup-omvandlingen innehåller tre funktioner för att anpassa sökningen den utför: maximalt antal matchningar för att returnera per indatarad, tokenavgränsare och likhetströsklar.
Omvandlingen returnerar noll eller fler matchningar upp till det antal matchningar som angetts. Att ange ett maximalt antal matchningar garanterar inte att omvandlingen returnerar det maximala antalet matchningar. det garanterar bara att omvandlingen returnerar högst det antalet matchningar. Om du anger det maximala antalet matchningar till ett värde som är större än 1 kan utdata från omvandlingen innehålla mer än en rad per sökning och vissa av raderna kan vara dubbletter.
Omvandlingen ger en standarduppsättning avgränsare som används för att tokenisera data, men du kan lägga till tokenavgränsare som passar dina datas behov. Egenskapen Avgränsare innehåller standardavgränsarna. Tokenisering är viktigt eftersom det definierar enheterna i de data som jämförs med varandra.
Likhetströsklarna kan anges på komponent- och kopplingsnivå. Tröskelvärdet för likhet på kopplingsnivå är endast tillgängligt när omvandlingen utför en fuzzy-matchning mellan kolumner i indata och referenstabellen. Likhetsintervallet är 0 till 1. Ju närmare 1 tröskelvärdet är, desto mer lika måste raderna och kolumnerna vara för att kvalificeras som dubbletter. Du anger likhetströskelvärdet genom att ange egenskapen MinSimilarity på komponent- och kopplingsnivå. För att uppfylla likheten som anges på komponentnivå måste alla rader ha en likhet mellan alla matchningar som är större än eller lika med likhetströskelvärdet som anges på komponentnivå. Det innebär att du inte kan ange en mycket nära matchning på komponentnivå om inte matchningarna på raden eller kopplingsnivån är lika nära.
Varje match innehåller en likhetspoäng och en konfidenspoäng. Likhetspoängen är ett matematiskt mått på texturlikheten mellan indataposten och posten som Fuzzy Lookup-transformering returnerar från referenstabellen. Konfidenspoängen är ett mått på hur troligt det är att ett visst värde är den bästa matchningen mellan matchningarna i referenstabellen. Konfidenspoängen som tilldelas till en post beror på de andra matchande posterna som returneras. För exempelvis matchningarna St. och Saint returneras en låg likhetspoäng oavsett andra matchningar. Om Saint är den enda match som returneras är konfidenspoängen hög. Om både Saint och St. förekommer i referenstabellen är förtroendet för St. högt och förtroendet för Saint är lågt. Hög likhet kanske dock inte innebär hög konfidens. Om du till exempel letar upp värdet kapitel 4, har de returnerade resultaten kapitel 1, kapitel 2och kapitel 3 en hög likhetspoäng men en låg konfidenspoäng eftersom det är oklart vilket av resultaten som är den bästa matchningen.
Likhetspoängen representeras av ett decimalvärde mellan 0 och 1, där likhetspoängen 1 innebär en exakt matchning mellan värdet i indatakolumnen och värdet i referenstabellen. Konfidenspoängen, även ett decimalvärde mellan 0 och 1, anger förtroendet för matchningen. Om ingen användbar matchning hittas tilldelas likhets- och konfidenspoängen 0 till raden, och utdatakolumnerna som kopieras från referenstabellen innehåller null-värden.
Ibland kanske Fuzzy Lookup inte hittar lämpliga matchningar i referenstabellen. Detta kan inträffa om indatavärdet som används i ett uppslag är ett enda, kort ord. Till exempel matchas inte helo- med värdet hello i en referenstabell när inga andra token finns i kolumnen eller någon annan kolumn på raden.
Transformeringsutdatakolumnerna innehåller de indatakolumner som är markerade som direktkolumner, de valda kolumnerna i uppslagstabellen och följande ytterligare kolumner:
_Similarity, en kolumn som beskriver likheten mellan värden i indata- och referenskolumnerna.
_Confidence, en kolumn som beskriver matchningens kvalitet.
Omvandlingen använder anslutningen till SQL Server-databasen för att skapa de temporära tabeller som fuzzy-matchningsalgoritmen använder.
Köra fuzzy-sökningstransformeringen
När paketet först kör transformeringen kopierar transformeringen referenstabellen, lägger till en nyckel med en heltalsdatatyp i den nya tabellen och skapar ett index i nyckelkolumnen. Därefter skapar omvandlingen ett index, kallat matchningsindex, på kopian av referenstabellen. Matchningsindexet lagrar resultatet av tokenisering av värdena i transformeringsindatakolumnerna, och omvandlingen använder sedan token i uppslagsåtgärden. Matchningsindexet är en tabell i en SQL Server-databas.
När paketet körs igen kan omvandlingen antingen använda ett befintligt matchningsindex eller skapa ett nytt index. Om referenstabellen är statisk kan paketet undvika den potentiellt dyra processen att återskapa indexet för upprepade sessioner med datarensning. Om du väljer att använda ett befintligt index skapas indexet första gången som paketet körs. Om flera Fuzzy Lookup-transformeringar använder samma referenstabell kan de alla använda samma index. Om du vill återanvända indexet måste uppslagsåtgärderna vara identiska. sökningen måste använda samma kolumner. Du kan namnge indexet och välja anslutningen till SQL Server-databasen som sparar indexet.
Om omvandlingen sparar matchningsindexet kan matchningsindexet underhållas automatiskt. Det innebär att matchningsindexet uppdateras varje gång en post i referenstabellen uppdateras. Att underhålla matchningsindexet kan spara bearbetningstid eftersom indexet inte behöver återskapas när paketet körs. Du kan ange hur omvandlingen hanterar matchningsindexet.
I följande tabell beskrivs alternativen för matchningsindex.
Alternativ | Beskrivning |
---|---|
GenereraOchUnderhållaNyIndex | Skapa ett nytt index, spara det och underhålla det. Transformeringen installerar utlösare i referenstabellen för att hålla referenstabellen och indextabellen synkroniserade. |
GenerateAndPersistNewIndex | Skapa ett nytt index och spara det, men underhåll det inte. |
GenereraNyIndex | Skapa ett nytt index, men spara det inte. |
ReuseExistingIndex | Återanvänd ett befintligt index. |
Underhåll av matchningsindextabellen
Alternativet GenerateAndMaintainNewIndex installerar utlösare i referenstabellen för att hålla matchningsindextabellen och referenstabellen synkroniserad. Om du måste ta bort den installerade utlösaren måste du köra den sp_FuzzyLookupTableMaintenanceUnInstall lagrade proceduren och ange det namn som anges i egenskapen MatchIndexName som indataparametervärde.
Du bör inte ta bort matchningsindextabellen innan du kör den lagrade proceduren sp_FuzzyLookupTableMaintenanceUnInstall. Om matchindextabellen tas bort körs inte utlösarna i referenstabellen korrekt. Alla efterföljande uppdateringar av referenstabellen misslyckas tills du manuellt släpper utlösarna i referenstabellen.
SQL TRUNCATE TABLE-kommandot anropar inte DELETE-utlösare. Om TRUNCATE TABLE-kommandot används i referenstabellen synkroniseras inte längre referenstabellen och matchningsindexet och fuzzy-sökningstransformeringen misslyckas. Medan utlösarna som underhåller matchningsindextabellen är installerade i referenstabellen bör du använda KOMMANDOT SQL DELETE i stället för kommandot TRUNCATE TABLE.
Not
När du väljer Underhåll lagrat index på fliken referenstabell i Fuzzy Lookup Transformation Editoranvänder omvandlingen hanterade lagrade procedurer för att underhålla indexet. Dessa hanterade lagrade procedurer använder integreringsfunktionen common language runtime (CLR) i SQL Server. Som standard är CLR-integrering i SQL Server inte aktiverat. Om du vill använda funktionen Underhåll lagrat index måste du aktivera CLR-integrering. Mer information finns i Aktivera CLR-integrering.
Eftersom alternativet Underhåll lagrat index kräver CLR-integrering fungerar den här funktionen endast när du väljer en referenstabell på en instans av SQL Server där CLR-integrering är aktiverad.
Radjämförelse
När du konfigurerar Fuzzy Lookup-transformering kan du ange den jämförelsealgoritm som omvandlingen använder för att hitta matchande poster i referenstabellen. Om du anger egenskapen Uttömmande till Truejämför omvandlingen varje rad i indata med varje rad i referenstabellen. Den här jämförelsealgoritmen kan ge mer exakta resultat, men det kommer sannolikt att göra att omvandlingen går långsammare om inte antalet rader är referenstabellen är liten. Om egenskapen Uttömmande är inställd på Trueläses hela referenstabellen in i minnet. För att undvika prestandaproblem rekommenderar vi att du anger egenskapen Uttömmande till True endast under paketutveckling.
Om egenskapen Uttömmande är inställd på Falsereturnerar Fuzzy Lookup-omvandlingen endast matchningar som har minst en indexerad token eller delsträng (delsträngen kallas för en q-gram) gemensamt med indataposten. För att maximera effektiviteten för sökningar indexeras endast en delmängd av token på varje rad i tabellen i den inverterade indexstruktur som Fuzzy Lookup-omvandlingen använder för att hitta matchningar. När indatauppsättningen är liten kan du ange Fullständig till True för att undvika saknade matchningar som det inte finns några vanliga token för i indextabellen.
Cachelagring av index och referenstabeller
När du konfigurerar Fuzzy Lookup-transformering kan du ange om omvandlingen delvis cachelagrar index- och referenstabellen i minnet innan omvandlingen utför sitt arbete. Om du anger egenskapen WarmCaches till Trueläses index- och referenstabellen in i minnet. När indata har många rader kan du förbättra omvandlingens prestanda genom att ange egenskapen WarmCaches till True. När antalet indatarader är litet kan du göra återanvändningen av ett stort index snabbare om du anger egenskapen WarmCaches till False.
Temporära tabeller och index
Vid körning skapar Fuzzy Lookup-omvandlingen temporära objekt, till exempel tabeller och index, i SQL Server-databasen som omvandlingen ansluter till. Storleken på dessa temporära tabeller och index står i proportion till antalet rader och token i referenstabellen och antalet token som Fuzzy Lookup-omvandlingen skapar. Därför kan de potentiellt förbruka en betydande mängd diskutrymme. Omvandlingen frågar även dessa temporära tabeller. Du bör därför överväga att ansluta Fuzzy Lookup-omvandlingen till en instans som inte är produktionsbaserad för en SQL Server-databas, särskilt om produktionsservern har begränsat diskutrymme.
Prestandan för den här omvandlingen kan förbättras om de tabeller och index som används finns på den lokala datorn. Om referenstabellen som Fuzzy Lookup-omvandlingen använder finns på produktionsservern bör du överväga att kopiera tabellen till en icke-produktionsserver och konfigurera Fuzzy Lookup-transformering för att få åtkomst till kopian. Genom att göra detta kan du förhindra att uppslagsfrågorna förbrukar resurser på produktionsservern. Om Fuzzy Lookup-transformeringen upprätthåller matchningsindexet, d.v.s. om MatchIndexOptions är inställt på GenerateAndMaintainNewIndex– kan transformeringen låsa referenstabellen under datarensningen och förhindra att andra användare och program kommer åt tabellen.
Konfigurering av Fuzzy Lookup-transformationen
Du kan ange egenskaper via SSIS Designer eller programmatiskt.
Om du vill ha mer information om de egenskaper som du kan ange i dialogrutan Avancerad redigerare eller programmatiskt klickar du på något av följande avsnitt:
Relaterade uppgifter
Mer information om hur du anger egenskaper för en dataflödeskomponent finns i Ange egenskaper för en dataflödeskomponent.
Fuzzy Lookup Transformation Editor (Referenstabellfliken)
Använd fliken referenstabell i dialogrutan Fuzzy Lookup Transformation Editor för att ange källtabellen och indexet som ska användas för sökningen. Referensdatakällan måste vara en tabell i en SQL Server-databas.
Anteckning
Fuzzy Lookup-transformering skapar en fungerande kopia av referenstabellen. Indexen som beskrivs nedan skapas i den här arbetstabellen med hjälp av en särskild tabell, inte ett vanligt SQL Server-index. Transformeringen ändrar inte befintliga källtabeller om du inte väljer Underhåll lagrat index. I det här fallet skapar den en utlösare i referenstabellen som uppdaterar arbetstabellen och uppslagsindextabellen baserat på ändringar i referenstabellen.
Nota
Egenskaperna Uttömmande och MaxMemoryUsage för Fuzzy Lookup-transformation är inte tillgängliga i Fuzzy Lookup Transformation Editor, men kan ställas in med Advanced Editor. Dessutom kan ett värde som är större än 100 för MaxOutputMatchesPerInput endast anges i Advanced Editor. Mer information om dessa egenskaper finns i avsnittet Fuzzy Lookup Transformation i Transformation Custom Properties.
Alternativ
OLE DB-anslutningshanteraren
Välj en befintlig OLE DB-anslutningshanterare i listan eller skapa en ny anslutning genom att klicka på Ny.
Ny
Skapa en ny anslutning med hjälp av dialogrutan Konfigurera OLE DB Connection Manager.
Generera nytt index
Ange att omvandlingen ska skapa ett nytt index som ska användas för sökningen.
Referenstabellnamn
Välj den befintliga tabell som ska användas som referenstabell (uppslagstabell).
Store nya index
Välj det här alternativet om du vill spara det nya uppslagsindexet.
Nytt indexnamn
Om du har valt att spara det nya uppslagsindexet skriver du ett beskrivande namn för indexet.
Underhålla lagrade index
Om du har valt att spara det nya uppslagsindexet anger du om du också vill att SQL Server ska underhålla indexet.
Notera
När du väljer Underhåll lagrat index på fliken referenstabell i Fuzzy Lookup Transformation Editoranvänder omvandlingen hanterade lagrade procedurer för att underhålla indexet. Dessa hanterade lagrade procedurer använder integreringsfunktionen common language runtime (CLR) i SQL Server. Som standard är CLR-integrering i SQL Server inte aktiverat. Om du vill använda funktionen Underhåll lagrat index måste du aktivera CLR-integrering. För mer information, se Aktivera CLR-integrering.
Eftersom alternativet Underhåll lagrat index kräver CLR-integrering fungerar den här funktionen endast när du väljer en referenstabell på en instans av SQL Server där CLR-integrering är aktiverad.
Använd befintligt index
Ange att omvandlingen ska använda ett befintligt index för sökningen.
Namn på ett befintligt index
Välj ett tidigare skapat uppslagsindex i listan.
Fuzzy Lookup Transformation Editor (fliken Kolumner)
Använd fliken Kolumner i dialogrutan Fuzzy Lookup Transformation Editor för att ange egenskaper för indata- och utdatakolumner.
Alternativ
Tillgängliga Indatakolumner
Dra indatakolumner för att ansluta dem till tillgängliga uppslagskolumner. Dessa kolumner måste ha matchande datatyper som stöds. Välj en mappningsrad och högerklicka för att redigera mappningarna i dialogrutan Skapa relationer.
namn
Visa namnen på de tillgängliga indatakolumnerna.
passera genom
Ange om indatakolumnerna ska inkluderas i utdata från omvandlingen.
Tillgängliga Uppslagskolumner
Använd kryssrutorna för att markera kolumner där fuzzy-sökningsåtgärder ska utföras.
Uppslagskolumn
Välj uppslagskolumner i listan över tillgängliga referenstabellkolumner. Dina val visas i kryssrutorna i tabellen Tillgängliga uppslagskolumner. Om du väljer en kolumn i Tillgängliga uppslagskolumner skapar tabellen en utdatakolumn som innehåller referenstabellkolumnvärdet för varje matchande rad som returneras.
utdataalias
Ange ett alias för utdata för varje uppslagskolumn. Standardvärdet är namnet på uppslagskolumnen med ett numeriskt indexvärde som läggs till. Du kan dock välja valfritt unikt, beskrivande namn.
Redigerare för suddig uppslagstransformation (avancerad flik)
Använd fliken Avancerat i dialogrutan Fuzzy Lookup Transformation Editor för att ange parametrar för fuzzy-sökningen.
Alternativ
Maximalt antal matchningar för utdata per sökning
Ange det maximala antalet matchningar som omvandlingen kan returnera för varje indatarad. Standardvärdet är 1.
Tröskelvärde för likhet
Ange likhetströskelvärdet på komponentnivå med skjutreglaget. Ju närmare värdet är 1, desto närmare likheten mellan uppslagsvärdet och källvärdet måste vara för att kvalificeras som en matchning. Om du ökar tröskelvärdet kan matchningshastigheten förbättras eftersom färre kandidatposter behöver beaktas.
tokenavgränsare
Ange de avgränsare som omvandlingen använder för att tokenisera kolumnvärden.
Se även
Söktransformation
Osäker grupperingsomvandling
Integration Services-omvandlingar