Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[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

MGJ

I3loodHound

Ima itko ove?


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,
    },
  }
);

Sljedeća stranica »