/aggregations-2

MongoDB, CouchDB, Elasticsearch – przykładowe agregacje danych

Primary LanguageJavaScript

Agregacje 2

Data Wranglers

Do aggregacji można wykorzystać następujące kolekcje:

Kolekcje zostały zaimportowane do bazy MongoDB działającej na maszynie wirtualnej. Do maszyny logujemy się w ten sposób:

mongo --username student --password sesja2013 153.19.1.202/test

Uwaga: Użytkownik student ma uprawnienia tylko do odczytu w bazie test.

Nasze agregacje

  1. Bzyl, Włodzimierz. Imieniny.
  2. Bełcik, Jakub. Przestępstwa uliczne.
  3. Białkowski, Dominik. Current Census Blocks for McKinley County.
  4. Brzeziński, Damian. GDELT-EventDatabase.
  5. Dermont, Jacek. Albumy muzyczne.
  6. Detlaf, KrzysztofBilans społeczny.
  7. Dępczyk, Michał. Broadband coverage.
  8. Dobrzycki, Wojciech. Lista osób.
  9. Domurat, Szymon. Youtube.
  10. Duwe, Oskar. Baza IMDB.
  11. Elszkowski, Adrian. Kody pocztowe.
  12. Gałka, Jacek.
  13. Gniado, Bartosz.
  14. Groszek, Rafał.
  15. Karczewski, Kamil.
  16. Karwowski, Kamil. Strony internetowe.
  17. Kłeczek, Piotr.
  18. Kotłowski, Piotr. Lotniska.
  19. Koźmiński, Marcin.
  20. Królik, Przemysław. GetGlue IMDB.
  21. Kubacki, Konrad.
  22. Kwiatkowski, Mateusz. The Internet Movie Database.
  23. Lewandowska, Marta. Baby names.
  24. Łuczun, Rafał.
  25. Małecki, Maciej.
  26. Matulewski, Damian. Głosowanie.
  27. Melzer, Grzegorz. GetGlue – TIMDB.
  28. Mieszała, Konrad. Bankowość.
  29. Motel, Mateusz. The Internet Movie Database.
  30. Motławski, Mateusz. Movies and tv shows Database.
  31. Napiórkowski, Sebastian
  32. Osiński, Miłosz. Lista słów do gier.
  33. Ostrowski, Michał.
  34. Pietraszuk, Bartłomiej Przypadki zauważenia UFO w USA
  35. Paczyński, Łukasz. Lista pracowników.
  36. Piasecka, Aleksandra.
  37. Pikora, Mateusz. Obserwacje Ufo.
  38. Plichta, Oskar. The Internet Movie Database.
  39. Puchalski, Paweł.
  40. Rogaszewski, Piotr.
  41. Rybarczyk, Karolina. Waga i wzrost.
  42. Sawicki, Paweł.
  43. Siora, Kacper. Deaths.
  44. Skiba, Marek. Apache Logs.
  45. Skowroński, Krzysztof. Pogoda w Edynburgu.
  46. Smykowski, Adrian.
  47. Sott, Tomasz. BTS – On-Time Performance.
  48. Stefanowicz, Michał. Loty.
  49. Szygenda, Mateusz. Wypadki drogowe.
  50. Tomczak, Robert. The Internet Movie Database.
  51. Wąsowicz, Michał. GetGlue – Movies and TV Shows Database.
  52. Winsławski, Bartłomiej. Meritum Bank.
  53. Wiśniewski, Konrad. The Internet Movie Database.
  54. Zdunek, Kamil. Chicago Crimes.
  55. Żarkowski, Mateusz. PAMAP – Physical Activity Monitoring.

  1. Cała, Mariusz.
  2. Dolata, Jędrzej.
  3. Głowacki, Michał.
  4. Januszewski, Tomasz.
  5. Jaźwiński, Robert.
  6. Malinowski, Piotr.
  7. Osękowski, Dominik.
  8. Piasecka, Aleksandra.
  9. Pietraszuk, Bartłomiej.
  10. Pikora, Mateusz.
  11. Plichta, Oskar.
  12. Puchalski, Paweł.
  13. Wiśniewski, Piotr.

BigData (+1M)

GetGlue and Timestamped Event Data (ok. 11 GB, 19_831_300 json-ów, próbka 100 jsonów getglue101):

{
  "_id": ObjectId("5276918832cf3c2b84540440"),
  "comment": "",
  "modelName": "movies",
  "displayName": "",
  "title": "The Dark Knight",
  "timestamp": "2008-10-28T16:47:31Z",
  "image": "http://ia.media-imdb.com/images/...@@._V1._SX94_SY140_.jpg",
  "userId": "sippey",
  "private": "false",
  "director": "Christopher Nolan",
  "source": "http://www.imdb.com/title/tt0468569/",
  "version": "1",
  "link": "http://www.imdb.com/title/tt0468569/",
  "lastModified": "2011-12-16T19:39:33Z",
  "action": "Liked",
  "lctitle": "the dark knight",
  "objectKey": "movies/dark_knight/christopher_nolan"
}

Dane z lat 2007–2012, tylko filmy i przedstawienia TV.

Przykładowe aggregacje i zliczania: ilu jest różnych użytkowników w danych? jakie jest 10 najpopularniejszych filmów i przedstawień TV? ile jest różnych akcji?

Ściąga z Gita

Trzy sposoby radzenia sobie z taką sytuacją: We can’t automatically merge this pull request.

Sposób 1:

git remote add miotla007 git://github.com/miotla007/aggregations-2.git
git fetch miotla007
git merge miotla007/master
  .. edycja .. rozwiązywanie konfliktów
git push origin master

git remote rm miotla007

Sposób 2 (sugerowany przez GitHub Team):

git checkout -b miotla007-master master
git pull git://github.com/miotla007/aggregations-2.git master
git checkout master
git merge miotla007-master
git push origin master

git branch -d miotla007-master

Sposób 3

# dociaganie zmian z oryginalnego repozytorium
# https://help.github.com/articles/fork-a-repo#step-3-configure-remotes
git pull upstream

# rebasing naszego brancha
git checkout my-branch
git rebase upstream
  # rozwiązywanie konfliktów jeżeli zajdzie potrzeba
  # (instrukcje pojawią się na ekranie)

Dużym plusem tego sposobu jest brak commita z mergem (porządek w historii repozytorium).

Undo różnych rzeczy:

git reset --merge           # merge
git reset --hard ORIG_HEAD  # rebase

Another common practice is to rebase the last few commits in your current branch

Interactive rebase on GitHub

Jak zmniejszyć liczbę commitów, zmienić ich kolejność i przeredagować wpisy log:

git checkout issue16                       # o ile commity są na tej gałęzi
git log --pretty=oneline HEAD~6..HEAD      # sprawdzamy które commity będziemy zmieniać
git rebase -i HEAD~6                       # poprawiamy ostatnich 6 commitów

.. edycja ..
....  edit -- jeśli chcemy poprawić ten commit lub coś do niego dodać
........  git reset HEAD^  # rollback the last commit
........  git status
........  git add --patch  # lub dodajemy/edytujemy pliki
........
........  git rebase --contiune
....  reword -- poprawiamy tekst wpisu do log

git log --pretty=oneline
git rebase master                          # o ile jesteśmy na gałęzi issue16
git checkout master
git merge issue16
git branch -d issue16                      # możemy usunąć scaloną gałąź

Na stronie manuala gitrevisions jest opisane znaczenie: HEAD^, ^HEAD, HEAD~n.

Stashing:

git stash
git stash list
git stash apply stash@{0}  # przykłady
git stash drop  stash@{0}

Zobacz też:

Simple Rules for Reproducible Computations

Provide public access to scripts, runs, and results:

  1. Version control all custom scripts:
  • avoid writing code
  • write thin scripts and use standard tools and use standard UNIX commands to chain things together.
  1. Avoid manual data manipulation steps:
  • use a build system, for example make, and have all results produced automatically by build targets
  • if it’s not automated, it’s not part of the project, i.e. have an idea for a graph or an analysis? automate its generation
  1. Use a markup, for example Markdown, to create reports for analysis and presentation output products.

And two more rules:

  1. Record all intermediate results, when possible in standardized formats.
  2. Connect textual statements to underlying results.

Generowanie spisu treści

Do automatycznego wygenerowania spisu treści możemy użyć narzędzia o nazwie table-of-contents-preprocessor.