• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Array-functies erg langzaam (grote hoeveelheid data)

Status
Niet open voor verdere reacties.

sprezzatura

Gebruiker
Lid geworden
8 mei 2010
Berichten
14
All,

Iedere week importeer ik zo'n 200k regels (met zo'n 8 kolommen) in Excel. Op iedere regel wil ik deze formule toepassen:

=AANTALLEN.ALS([Cstmr Nr]; [@[Cstmr Nr]]; [DateTime]; ">"&[@DateTime]; [DateTime]; "<="&[@DateTime]+periode)​

Als ik dit doe, heeft Excel echter zo'n 8 uur nodig om het resultaat van deze formule voor alle rijen te berekenen. Dat duurt dus onwerkbaar lang.

Hebben jullie ervaring met het werken met dergelijke grote hoeveelheden data en het toepassen van array-functies hierop? Zijn er manieren om een dergelijke berekening te versnellen? Zou wellicht Access hier kunnen helpen?
 
Laatst bewerkt:
Plaats eens een deelbestand met wat je wil.
Dan komen er snel genoeg allerlei suggesties om je resultaat te bereiken.
Daarna kun jij in jouw bestand testen welke de snelste is.
 
Oke, sure.

Wat de bedoeling is: op wekelijkse basis importeer ik uit ons datawarehouse de data van zo’n 200k calls die in ons callcenter zijn afgehandeld. Aan de hand van deze data wil ik de First Contact Resolution (FCR) berekenen. Hoe hoger het FCR-percentage hoe efficiënter het callcenter is. De (gemiddelde) FCR-percentages wil ik vervolgens op verschillende niveaus kunnen bekijken. Denk hierbij aan op agentniveau, op procesniveau, op weekniveau en op afhandeltijdniveau.

De FCR per call bereken ik nu met onderstaande formule. Met deze formule wordt gekeken of een klantnummer nog één of meerdere keren is gelogd, na de initiële log binnen max. 7 dagen.

=ALS((AANTALLEN.ALS([Cstmr Nr]; [@[Cstmr Nr]]; [DateTime]; ">"&[@DateTime]; [DateTime]; "<="&[@DateTime]+7))>0; 0; 1)​

Al deze data stop ik vervolgens in een draaitabel, waarna ik het aantal calls die in 1 keer zijn afgehandeld deel door het totaal aantal logs. De uitkomst hiervan levert een nieuwe kolom op (in de draaitabel) die aangeeft hoeveel van de calls in 1 keer zijn afgehandeld.

Dit alles gaat prima en levert de gewenste output op als ik dit op max. een paar duizend regels toepas. Zodra het aantal regels echter toeneemt, begint het geheel onwerkbaar langzaam te worden.

Het voorbeeldbestand heb ik bijgevoegd als bijlage. Op tabblad ‘Analyse’ de draaitabel en op het tabblad ‘Data’ de betreffende call-logs.

Hoe zouden jullie dit aanpakken?
 

Bijlagen

je kijkt nu met alles over 200k gegevens, maar je bent eigenlijk alleen geinteresseerd in de eerstvolgende 7 dagen.
Die 200k, wat is dat ? een maand ? Wat is het maximale aantal rijen dat je bv. in 7 dagen kan krijgen ? bv. 10.000
Dan zou je met verschuivingen in je formules het al een heel stuk handiger maken voor excel
Het inlezen van die datum-tijd zou misschien ook in 1 beweging kunnen gaan, zodat je die niet meer opnieuw moet berekenen.
Te overwegen is ook die tijd niet mee te nemen, Als je toch al 7 dagen ver kijkt, dan kijk je direkt voor alle gegevens tot middernacht van de 7e dag, dan maakt het ook eenvoudiger.
 
Aansluitend op de vragen van cow: als je van die 200k calls maar een beperkte set nodig hebt probeer dan te bereiken dat je in Excel alleen binnenkrijgt wat je nodig hebt.
De beste oplossing hiervoor is dat de dwh beheerder een query op maat voor je maakt, al dan niet parameter gestuurd.
Second best is dat je de gegevens importeert in excel en mbv sql aan de poort filtert en aggregeert.
Third best is import van 200k en het geavanceerd filter gebruiken om je werkset te beperken.

Mss in de help nog even opzoeken wat Excel onder array functies verstaat?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan