SQL Server Integration Services
Vejledningen herunder beskriver hvordan API'et tilgås ved hjælp af SQL Server Integration Services (SSIS), der er en platform fra Microsoft til at bygge enterprise løsninger til data udtræk og transformation.
I vejledningen benyttes Visual Studio, der er et populært værktøj til udvikling af SSIS pakker. Ofte bliver SSIS pakker også bygget ved hjælp af SSIS Designer. Der er ikke de store forskelle på vejledningen til de to produkter, så denne vejledning kan med tilpasninger også fungere som vejledning til SSIS Designer.
Opret et nyt projekt
Til start oprettes et nyt SSIS projekt i Visual Studio.
Vælg File->New->Project fra top menuen i Visual Studio, hvilket åbner en ny dialog til oprettelse af projekter.
Søg efter Integration Services Project, og vælg derefter projekt typen når den fremkommer.
Udfyld med informationer om projektet og klik derefter på Create. Dette opretter et nyt, tomt projekt.
Tilføj indhold til SSIS pakken
Den nyoprettede SSIS pakke starter med at være tom. Start med at tilføje en Script Component til den.
Klik på Data Flow, og tilføj en ny Script Component til brugerfladen.
Vælg Source og klik OK.
Dobbeltklik på den nyoprettede Script Component, og Vælg Inputs and Outputs.
Konfigurer med kolonner der passer til dataudtrækket. I dette tilfælde er der tilføjet 2 kolonner - henholdsvis Institution der har datatypen String og Elever der har datatypen four-byte signed integer.
Klik på Script og derefter på Edit Script. En ny instans af Visual Studio åbner, med mulighed for at redigere script koden.
Indsæt/erstat indholdet med følgende kode.
#region Namespaces
using System;
using System.Collections.Generic;
using System.Data;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Web.Script.Serialization;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
#endregion
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain: UserComponent {
Dictionary < string, string > [] dt = null;
public override void PreExecute() {
base.PreExecute();
var url = "https://api.uddannelsesstatistik.dk/";
var path = "/api/v1/statistik";
var key = "Insert key here";
var query = "Insert query here";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", key);
var response = client.PostAsync(path, new StringContent(query, UnicodeEncoding.UTF8, "application/json")).Result;
if (response.IsSuccessStatusCode) {
var result = response.Content.ReadAsStringAsync().Result;
var serializer = new JavaScriptSerializer();
dt = serializer.Deserialize < Dictionary < string, string > [] > (result);
}
}
public override void CreateNewOutputRows() {
foreach(var row in dt) {
Output0Buffer.AddRow();
Output0Buffer.Institution = row["[Institution].[Institution].[Institution]"];
int elever = 0;
if (Int32.TryParse(row["Antal elever"].Replace(".", ""), out elever)) {
Output0Buffer.Elever = elever;
} else {
Output0Buffer.Elever_IsNull = true;
}
}
}
}
Udskift indholdet i de to variable key og query med passende værdier.
I dette eksempel er anvendt følgende query.
var query = "{ \"område\": \"GS\", \"emne\": \"ELEV\", \"underemne\": \"ELEVEX\", \"nøgletal\": [ \"Antal elever\" ], \"detaljering\": [ \"[Institution].[Institution]\" ], \"indlejret\": false, \"tomme_rækker\": true, \"formattering\": \"json\", \"side\": 0 }"
Gem indholdet og luk Visual Studio. Klik OK i den åbne Script Transformation Editor, så ændringerne bliver gemt i SSIS pakken.
Test SSIS pakken
For at kunne teste SSIS pakken skal der tilføjes en destination til data. I dette eksempel bruges en database.
Opret en database og en tabel der kan modtage data. Der er anvendt følgende skema i dette eksempel.
CREATE TABLE [dbo].[OLE DB Destination](
[Elever] [int] NULL,
[Institution] [varchar](500) NULL
) ON [PRIMARY]
Tilføj en OLE DB Destination til SSIS pakken, og bind den sammen med den foregående task.
Konfigurer den til at benytte den nyoprettede SQL Server tabel.
Test pakken ved at klikke Start fra top menuen.
Hvis alt er opsat rigtigt afvikler pakken og data gemmes i database tabellen.