[NBP] 3. domaća zadaća - 2021/2022
Exelero
Ako je netko počeo rješavati zadaću, jeste uspjeli ovaj zadatak?
Vrba
Exelero jesi mozda uspio rijesiti ovaj?
sekiro
jel ima neko ovaj?
Harweyy
Zadatak glasi : koristeći kolekciju dvdrent izračunajte prosječan iznos plaćanja najma u 2016. godini i koliko je postotno različit od prosjeka svih prethodnih godina zajedno. Prosjek zaokružite na 4 decimale, a postotnu razliku na dvije i formatirajte na dvije.
Avg koji se izracuna je tocan, tako da pretpostavljam da je avg prethodnih godina isto, nikako ne mogu dobit tocan postotak. Pokusao sam razlicite varijante racunanja i zaokruzivanja medurezultata ali uglavno dobivam -1.09, -1.1000000003, -1.18 …..
mgd
Harweyy kako si dobio točan avg? Ja ne mogu nikako
boki8
Harweyy na koji nacin se ovo rjesava?
Stubla
Zna netko ovaj?
Harweyy
mgd za datum koji koristis, koristi payment_date
mgd
zna li netko ovaj?
Harweyy
Pro tip : nemoj te izgubit cijeli dan ko ja, new date(null) vraca 1. sijecanj 1970
mgd
db.dvdrent.mapReduce(`
function(){
if(this.customer !== undefined && this.customer.address !== undefined && this.staff.address !== undefined && this.staff.address.country === 'Philippines'){
var staf = {name: this.staff.first_name,
lastaname: this.staff.last_name};
emit(staf, this.customer);
}
}
`, `
function(staff, customers){
var set = new Set();
var set2 = new Set();
var value = {phil: 0, other:0};
customers.forEach(function(cst){
if(cst.address.country === 'Philippines'){
set.add(cst.customer_id);
}else{
set2.add(cst.customer_id);
}
});
value.phil = set.size;
value.other = set2.size;
return value;
}
`
);
vidi li netko problem? javlja mi da cst.address is undefined, a u shellu mi vraća dobar rezultat…
Arbeit123
mgd Mislim da je problem CR-Combinable Reducer, tj. izlaz bi trebao odgovarati ulazu po formatu , preza 8. NoSQL (3. od 4) od 49. slajda
MGJ ne vidim gresku ali evo rjesenje 😅
db.dvdrent.mapReduce(
`function(){
if (this.film!==undefined && this.film.categories.name !==null && this.film.length>180){
var description = this.film.description;
var year = this.film.release_year;
var title = this.film.title;
this.film.categories.forEach(function(category){
emit({
category:category.name
},
{
films:[
{
year:year,
title: title,
description :description,
}
]
}
)
})
}};`,
`function(key,values){
var rv= {
films:[]
};
values.forEach(function(value){
rv.films=rv.films.concat(value.films);
});
rv.films = rv.films.sort(function(a,b){
return a.title>b.title;
});
rv.films = rv.films.filter((film , index , self) => (
index===self.findIndex((t) => (t.title === film.title)
)));
return rv;
};`, {
})
Ducky
Jel ima neko neki tip za debbugiranje funkcija map i reduce ili da ih bar zasebno pozovem
Lusy
Vidi netko grešku? Edgar mi vraća [ ]
I3loodHound
Zna netko ovaj?
Imam ovolko od koda, pomoc dalje bi dobro dosla
Lusy
I3loodHound Jesi uspio ovaj?
Lusy
MrPeanutButter
jel netko vidi grešku edgar mi vraća [] …
I3loodHound
A ovaj? Count i amount mi za par drzava nisu dobri, greska je za 1-2, ne vidim dal grijesim u uvjetu negdje ili necem drugom
Vrba
I3loodHound jesi uspio rijesiti ovaj? EDIT: samo makni 1. uvjet iz if-a (paymentdate ≠ null)
prx_xD
jel netko imao ovakav zadatak?
meni rjesenje nikako ne ispada dobro
MsBrightside
prx_xD sta dobijes
Vrba
jel imao netko ovaj?
prx_xD
MsBrightside
dobijem drugacije brojeve
otvorio sam ticket i kaze mi profesor da mi fali CR (valjda combinable reducer)
iako kada isti kod izvrsim lokano na bazi dobijem rezultate iste kao oni
db.dvdrent.mapReduce(
function () {
if (this.staff.address.country === 'Philippines') {
var st = {
name: this.staff.first_name,
lastname: this.staff.last_name,
};
var cs = {
customer_id: this.customer.customer_id,
country: this.customer.address.country,
};
emit(st, cs);
}
},
function (key, values) {
var res = {
phil: 0,
other: 0
};
var cust_ids = [];
values.forEach(function (value) {
if (!cust_ids.includes(value.customer_id)) {
cust_ids.push(value.customer_id);
if (value.country === 'Philippines') {
res.phil += 1;
} else {
res.other += 1;
}
}
});
return res;
},
{
out: {
inline: 1,
},
}
);