GuideLister & synkronisering
Hvordan rydder vi op i en rodet adresseliste?
En kundeliste, der er tastet ind gennem ti år, har stavefejl, gamle postnumre, "st. tv." det forkerte sted og adresser, der ikke findes mere. Datavask sammenligner hver streng med alle adgangsadresser i DAR og giver dig de bedste kandidater og en kategori. Her er, hvordan du læser svaret, og hvordan du træffer en beslutning pr. række.
På denne side6 trin
Vask én adresse
Send strengen, som den står, i betegnelse. Svaret har kategori, antal og op til ti resultater, sorteret efter lighed fra 0 til 1. Enkeltkaldet virker på alle planer og tæller ét kald.
curl -G "https://api.grundfast.dk/v1/datavask/adgangsadresser" \
--data-urlencode "betegnelse=raadhuspladsen 1 kbh v" \
-H "Authorization: Bearer $GRUNDFAST_API_KEY"Hvad A, B og C betyder
Kategorien beregnes ud fra det bedste kandidats lighed og afstanden ned til nummer to. Grænserne er i dag:
| Kategori | Hvornår | Forslag til beslutning |
|---|---|---|
| A | Bedste lighed er mindst 0,98 — eller mindst 0,85 og 0,15 foran nummer to. Er der kun én kandidat, kræves 0,93. | Godkend automatisk. |
| B | Bedste lighed er mindst 0,55, men ikke klart nok til A. | Gennemgå — eller godkend, hvis dine egne felter bekræfter kandidaten. |
| C med kandidater | Svage eller flere lige gode kandidater. | Gennemgå de øverste tre kandidater manuelt. |
C med antal: 0 | Intet i registret lignede nok. | Afvis, og spørg kunden. |
Læs antal før kategori
kategori: "C" dækker både "usikkert" og "intet fundet". Kun antal skiller dem ad.Vask mange på én gang
POST /v1/datavask/adgangsadresser:batch vasker en liste i ét kald: 50 strenge på Pro, 100 på Scale og 150 på Enterprise. Batch kræver Pro; på en lavere plan svarer kaldet 402. Hver unik streng tæller én enhed — også en uden match, fordi den stadig får et svar. Dubletter fjernes før optællingen.
{
"results": [
{
"input": "Rådhuspladsen 1, 1550 København V",
"kategori": "A",
"antal": 10,
"resultater": [
{
"betegnelse": "Rådhuspladsen 1, 1550 København V",
"adgangsadresse_id": "0a3f507a-ec01-32b8-e044-0003ba298018",
"bfe_nummer": 6033528,
"postnr": "1550",
"kommunekode": "0101",
"lighed": 1
}
]
},
{
"input": "Postboks 1234",
"kategori": "C",
"antal": 0,
"resultater": []
}
],
"requested": 2,
"succeeded": 2
}
Resultaterne kommer efter dubletfjernelse, i den rækkefølge strengene først optrådte. Slå op på den trimmede
input, ikke på positionen i din liste.Første række er et sikkert match. Anden er
Cmedantal: 0— intet match, ikke en fejl.Tekstlighed mellem din streng og kandidaten, 0–1 med tre decimaler. Kandidaterne er sorteret faldende.
Gem
adgangsadresse_idsom nøgle ogbfe_nummersom vejen videre til BBR og Matriklen.succeededer altid lig medrequested. Kun en ugyldig body giver400for hele kaldet.
Eksemplet er forkortet: hver kandidat har også vejnavn, husnr, postnrnavn og koordinat. Koden herunder deler listen op efter planens loft og lægger hver række i én af tre bunker.
import { GrundfastClient } from '@grundfast/sdk';
const gf = new GrundfastClient({ apiKey: process.env.GRUNDFAST_API_KEY });
const LOFT = 50; // Pro; 100 på Scale, 150 på Enterprise
type Beslutning = 'godkend' | 'gennemgaa' | 'afvis';
function beslut(kategori: 'A' | 'B' | 'C', antal: number): Beslutning {
if (antal === 0) return 'afvis';
return kategori === 'A' ? 'godkend' : 'gennemgaa';
}
export async function vaskListe(raa: string[]) {
// Trim, drop tomme og for korte, og skær ned til 128 tegn — ellers afvises hele kaldet.
const strenge = [...new Set(raa.map((s) => s.trim().slice(0, 128)).filter((s) => s.length >= 2))];
const svar = new Map<string, { beslutning: Beslutning; adgangsadresse_id?: string }>();
for (let i = 0; i < strenge.length; i += LOFT) {
const { results } = await gf.datavaskBatch(strenge.slice(i, i + LOFT));
for (const r of results) {
const top = r.resultater[0];
svar.set(r.input, {
beslutning: beslut(r.kategori, r.antal),
...(top ? { adgangsadresse_id: top.adgangsadresse_id } : {}),
});
}
}
return svar; // slå hver af dine rækker op på dens trimmede streng
}Forbered strengene
- Saml adressen i én streng: vej og husnummer, etage og dør, postnummer og by. Mangler postnummeret, så tag byen med — det hjælper meget på ligheden.
- Fjern linjer, der ikke er adresse: "att.", "c/o", firmanavn og telefonnumre trækker ligheden ned.
- I en batch skal hver streng være 2–128 tegn efter trim. Én streng uden for det afviser hele kaldet med
400, og det afviste kald tæller ét kald mod kvoten. Enkeltkaldet skærer selv ned til 128 tegn. - Del listen op efter planens loft. Sender du flere unikke strenge, end planen tager, svarer API’et
402med navnet på den plan, der tager dem — over 150 svarer det400— og kaldet tæller ikke.
Når B skal gennemgås hurtigere
De fleste B’er er rigtige. Har din liste et separat postnummer- og husnummerfelt, kan du godkende en B automatisk, når kandidatens postnr og husnr er de samme som dine. Afviger husnummeret, er det næsten altid nabohuset, og så skal et menneske se på den. Vis i gennemgangen de tre øverste kandidater fra resultater med deres lighed, så den, der retter, kan vælge i stedet for at taste.
Når listen er lang
Over et par tusind rækker er et job det rette værktøj: send filen, og hent resultatet som CSV. Et datavask-job slår først op på vej, husnummer og postnummer, hvis de står i hver sin kolonne — et præcist fund får kategori A og score 1 — og vasker resten som fritekst. Bemærk to forskelle fra batch:
- Resultatfilen har kun den bedste kandidat pr. række (
gf_kategori,gf_score,gf_antal_kandidaterog adressen). Til gennemgang af B og C slår du de rækker op igen med enkeltkaldet for at se alternativerne. - En række uden kandidater havner i fejlfilen med status
404og koster intet. En række med kandidater — også i kategori C — står i resultatfilen og tæller. Filtrér pågf_kategori.
Var denne side nyttig?
Ofte stillede spørgsmål
A er et sikkert match, som du kan godkende automatisk. B er sandsynligt, men bør bekræftes. C er usikkert, og C med antal 0 betyder, at intet matchede.
Ja, i enkeltkald og batch tæller hver unik streng én enhed, fordi den får et svar. I et datavask-job koster en række uden kandidater intet; den havner i fejlfilen.
50 på Pro, 100 på Scale og 150 på Enterprise. Enkeltkaldet virker på alle planer. Længere lister sender du som et job.
Dubletter fjernes, før strengene vaskes. Par derfor svarene med dine rækker på feltet input, som er den trimmede streng.
A kræver høj tekstlighed og et klart forspring til nummer to, så den er bygget til automatisk godkendelse. Har du et separat postnummer, er det stadig en billig ekstra kontrol at sammenligne det med kandidatens.
Prøv det på rigtige data
Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0
Relateret