{"id":31887,"date":"2020-06-11T09:24:16","date_gmt":"2020-06-11T07:24:16","guid":{"rendered":"https:\/\/fotc.com\/bigquery-mi-ez-es-tutorial\/"},"modified":"2022-05-10T09:58:10","modified_gmt":"2022-05-10T07:58:10","slug":"bigquery-mi-ez-es-tutorial","status":"publish","type":"post","link":"https:\/\/fotc.com\/hu\/blog\/bigquery-mi-ez-es-tutorial\/","title":{"rendered":"BigQuery – mi ez \u00e9s hogyan kezdj\u00fck el haszn\u00e1lni? [Tutorial]"},"content":{"rendered":"\n
BigQuery – mi ez \u00e9s hogyan kezdj\u00fck el haszn\u00e1lni?<\/strong><\/p>\n\n\n\n Az adat korunk aranya – tudj\u00e1k ezt a fejleszt\u00e9sre \u00f6sszpontos\u00edt\u00f3 v\u00e1llalatok \u00e9s szervezetek is. A tudatos v\u00e1llalkoz\u00e1sok elemzik a megl\u00e9v\u0151 folyamatokat, \u00e9s v\u00e1ltoztat\u00e1sokat, fejleszt\u00e9seket vezetnek be a sz\u00e1mok alapj\u00e1n. N\u00e9melyik\u00fck tov\u00e1bb megy – felhaszn\u00e1lva a technol\u00f3gia k\u00edn\u00e1lta lehet\u0151s\u00e9geket, megj\u00f3solj\u00e1k a trendeket, a piacon v\u00e1rhat\u00f3 v\u00e1ltoz\u00e1sokat \u00e9s a m\u00e9g meg nem hozott \u00fczleti d\u00f6nt\u00e9sek hat\u00e1sait.<\/span><\/p>\n\n\n\n\n\n\n\n Az \u00fczleti tev\u00e9kenys\u00e9g n\u00f6veked\u00e9s\u00e9vel az adatk\u00e9szletek n\u00f6vekednek – a gigab\u00e1jtb\u00f3l terab\u00e1jt vagy petab\u00e1jt lesz. Egy elemz\u00e9si eszk\u00f6z fenntart\u00e1s\u00e1nak \u00e9s a jelent\u00e9sk\u00e9sz\u00edt\u00e9s r\u00f6vid id\u0151tartam\u00e1nak megfelel\u0151 szint\u0171 fenntart\u00e1sa \u00e9rdek\u00e9ben biztosnak kell lenn\u00fcnk benne, hogy a megfelel\u0151 technol\u00f3gi\u00e1t v\u00e1lasztjuk. A BigQuery – a BigData-elemz\u00e9sek elv\u00e9gz\u00e9s\u00e9nek szentelt szolg\u00e1ltat\u00e1s,<\/strong> amely sz\u00e1mos elemz\u00e9si eszk\u00f6zt, k\u00f6zt\u00fck a n\u00e9pszer\u0171 Google Analytics<\/strong> szolg\u00e1ltat\u00e1st is tartalmazza, \u00e9s ezzel felbecs\u00fclhetetlen \u00e9rt\u00e9k\u0171 seg\u00edts\u00e9get ny\u00fajt a c\u00e9gek sz\u00e1m\u00e1ra.<\/span><\/p>\n\n\n\n Sk\u00e1l\u00e1zhat\u00f3 felh\u0151 adatt\u00e1rh\u00e1z. Lehet\u0151v\u00e9 teszi a lek\u00e9rdez\u00e9sek milli\u00f3inak kezel\u00e9s\u00e9t \u00e9s petab\u00e1jtnyi adat fejlett elemz\u00e9s\u00e9t az SQL-ben an\u00e9lk\u00fcl, hogy agg\u00f3dnia kellene a fejlett infrastrukt\u00fara k\u00f6lts\u00e9ges karbantart\u00e1sa miatt<\/strong>.<\/span><\/p>\n\n\n\n A BigQuery az egyik a sz\u00e1mos programnak, amelyet el\u00e9rhetsz a <\/span>Google Cloud Platformon (GCP)<\/span><\/a>. Az adatok t\u00e1rol\u00e1sa \u00e9s elemz\u00e9se a felh\u0151ben t\u00f6rt\u00e9nik, a GCP stabil, biztons\u00e1gos \u00e9s sk\u00e1l\u00e1zhat\u00f3 infrastrukt\u00far\u00e1j\u00e1ban. Itt tudhatsz meg t\u00f6bbet arr\u00f3l, hogy <\/span>mi az a Google Cloud Platform, \u00e9s hogyan t\u00e1mogatja a v\u00e1llalkoz\u00e1sokat.<\/span><\/a>).<\/span><\/p>\n\n\n\n A szolg\u00e1ltat\u00e1s seg\u00edts\u00e9g\u00e9vel l\u00e9trehozhat saj\u00e1t elemz\u0151 eszk\u00f6zt, amelyet a fejl\u0151d\u00e9s, folyamatok vagy folyamatban l\u00e9v\u0151 esem\u00e9nyek nyomon k\u00f6vet\u00e9s\u00e9re haszn\u00e1lnak – p\u00e9ld\u00e1ul a v\u00e1llalaton bel\u00fcl vagy annak k\u00f6rny\u00e9k\u00e9n. A g\u00e9pi tanul\u00e1ssal (ML) kombin\u00e1lva lehet\u0151v\u00e9 teszi egy olyan rendszer fel\u00e9p\u00edt\u00e9s\u00e9t, amely p\u00e9ld\u00e1ul megj\u00f3solja a k\u00fcl\u00f6nb\u00f6z\u0151 t\u00e9nyez\u0151k el\u0151fordul\u00e1s\u00e1t \u00e9s figyelembe veszi azok lehets\u00e9ges hat\u00e1sait. A BigQuery seg\u00edthet a megl\u00e9v\u0151 BigData elemz\u0151 rendszer teljes\u00edtm\u00e9ny\u00e9nek \u00e9s fenntart\u00e1sa k\u00f6lts\u00e9geinek optimaliz\u00e1l\u00e1s\u00e1ban is. <\/span><\/p>\n\n\n\n A BigQuery egy felh\u0151alap\u00fa adatt\u00e1rh\u00e1z. A Google Cloud Platform szolg\u00e1ltat\u00e1sainak haszn\u00e1lat\u00e1val a v\u00e1llalkoz\u00e1sa fejleszt\u00e9s\u00e9re \u00e9s az elemz\u00e9sek legjobb kihaszn\u00e1l\u00e1s\u00e1ra koncentr\u00e1lhat. Nem kell tov\u00e1bbi id\u0151t \u00e9s k\u00f6lts\u00e9get ford\u00edtani az infrastrukt\u00fara karbantart\u00e1s\u00e1ra, a szerver biztons\u00e1g\u00e1nak megfelel\u0151 szint\u0171 friss\u00edt\u00e9s\u00e9re vagy biztos\u00edt\u00e1s\u00e1ra.<\/p>\n\n\n\n A terab\u00e1jtos adatok feldolgoz\u00e1sa a BigQuery seg\u00edts\u00e9g\u00e9vel m\u00e1sodperceket vesz csak ig\u00e9nybe, \u00edg egy petab\u00e1jt feldolgoz\u00e1sa k\u00f6r\u00fclbel\u00fcl 3 perc. A rakt\u00e1rak (warehouse) t\u00f6bb tucatszor gyorsabban dolgoznak fel nagy adatsorokat, mint az adatb\u00e1zis-rendszerek. Ennek eredm\u00e9nyek\u00e9nt az elemz\u00e9s ak\u00e1r val\u00f3s id\u0151ben is elv\u00e9gezhet\u0151, \u00e9s a v\u00e1ltoz\u00e1sok \u201e\u00e9l\u0151ben\u201d megfigyelhet\u0151k.<\/span><\/p>\n\n\n\n A BigQuery szolg\u00e1ltat\u00e1s k\u00f6lts\u00e9gei alkalmazkodnak a jelenlegi \u00fczleti k\u00f6vetelm\u00e9nyekhez. Csak\u00fagy, mint GCP eset\u00e9ben, itt is a felhaszn\u00e1l\u00e1s alapj\u00e1n fizet.<\/strong> Az adatt\u00e1rol\u00e1s (data storage) 20 USD\/TB. Ha az adatokat 90 vagy t\u00f6bb napig nem dolgozz\u00e1k fel, a csomag hossz\u00fa t\u00e1v\u00fa t\u00e1rol\u00e1sra v\u00e1lt, \u00e9s a szolg\u00e1ltat\u00e1s \u00e1ra 50%-kal cs\u00f6kken. Az adatfeldolgoz\u00e1s 5 USD\/TB-ba ker\u00fcl, de minden h\u00f3nap els\u0151 terab\u00e1jtja ingyenes.<\/span><\/p>\n\n\n\n Ez a d\u00edjfizet\u00e9si m\u00f3dszer azt jelenti, hogy a TCO (Total Cost of Ownership) h\u00e1rom \u00e9v alatt \u00e1tlagosan 30%-kal alacsonyabb, mint m\u00e1s BigData elemz\u00e9si megold\u00e1sok eset\u00e9ben.<\/span><\/p>\n\n\n\n A BigQuery haszn\u00e1lat\u00e1hoz nincs sz\u00fcks\u00e9g nagy v\u00e1ltoztat\u00e1sokra vagy a forr\u00e1sk\u00f3d \u00e1t\u00edr\u00e1s\u00e1ra. Ez annak k\u00f6sz\u00f6nhet\u0151, hogy a BigQuery t\u00e1mogatja az ANSI SQL: 2011 szabv\u00e1nyt, \u00e9s ingyen biztos\u00edtja az ODBC \u00e9s a JDBC programoz\u00e1si fel\u00fcleteket.<\/span><\/p>\n\n\n\n Az eszk\u00f6z automatikus biztons\u00e1gi ment\u00e9st hajt v\u00e9gre, \u00e9s a v\u00e1ltoz\u00e1sok el\u0151zm\u00e9nyeit 7 napig t\u00e1rolja<\/strong>. Ez lehet\u0151v\u00e9 teszi az eredm\u00e9nyek egyszer\u0171 \u00f6sszehasonl\u00edt\u00e1s\u00e1t az el\u0151z\u0151 id\u0151szakkal vagy az adatok vissza\u00e1ll\u00edt\u00e1s\u00e1t.<\/span><\/p>\n\n\n\n A BigQuery seg\u00edts\u00e9g\u00e9vel k\u00fcl\u00f6nb\u00f6z\u0151 forr\u00e1sokb\u00f3l sz\u00e1rmaz\u00f3 adatokat elemezhet – olyanokb\u00f3l, mint a Google Marketing Platform, a Google Analytics, a YouTube<\/strong> \u00e9s a k\u00fcls\u0151 SaaS-alkalmaz\u00e1sok sz\u00e1zaib\u00f3l. Az adatok a GCP-n k\u00edv\u00fcli infrastrukt\u00fara-megold\u00e1sokb\u00f3l is tov\u00e1bb\u00edthat\u00f3k a BigQuery-be.<\/span><\/p>\n\n\n\n Az el\u00e9rhet\u0151 funkci\u00f3k egyike a BigQuery ML, amelynek feladata a g\u00e9pi tanul\u00e1si k\u00e9pess\u00e9gek l\u00e9trehoz\u00e1sa \u00e9s fejleszt\u00e9se szabv\u00e1nyos SQL lek\u00e9rdez\u00e9sek seg\u00edts\u00e9g\u00e9vel. A BigQuery ML n\u00f6veli a g\u00e9pi tanul\u00e1sra k\u00e9pes term\u00e9kek fejleszt\u00e9s\u00e9nek sebess\u00e9g\u00e9t, mik\u00f6zben cs\u00f6kkenti a forr\u00e1sk\u00f3d \u00edr\u00e1s\u00e1ra \u00e9s az adatok hordozhat\u00f3s\u00e1g\u00e1ra vonatkoz\u00f3 k\u00f6vetelm\u00e9nyeket.<\/span><\/p>\n\n\n\n A BigQuery kiv\u00e1l\u00f3 eszk\u00f6z \u00fczleti elemz\u00e9sek (BI – business intelligence) k\u00e9sz\u00edt\u00e9s\u00e9hez. A szolg\u00e1ltat\u00e1s lehet\u0151v\u00e9 teszi hatalmas adatk\u00e9szletek elemz\u00e9s\u00e9t \u00e9s kiterjedt jelent\u00e9sek k\u00e9sz\u00edt\u00e9s\u00e9t m\u00e1sodpercek alatt. T\u00e1mogatja az \u201ead hoc\u201d jelent\u00e9sek l\u00e9trehoz\u00e1s\u00e1t is – vagyis olyan jelent\u00e9seket, amelyek egy bizonyos szelet adatot tartalmaznak, \u00e9s az \u00f6sszefoglal\u00f3 elk\u00e9sz\u00edt\u00e9s\u00e9hez nem sz\u00fcks\u00e9ges az analitikai vagy az informatikai r\u00e9szleg bevon\u00e1sa.<\/span><\/p>\n\n\n\n Mindk\u00e9t esetben a jelent\u00e9seket olyan adatmegjelen\u00edt\u0151 eszk\u00f6z\u00f6kkel lehet bemutatni, mint a Google Data Studio<\/strong>, a Looker vagy a Tableau.<\/span><\/p>\n\n\n\n me n\u00e9h\u00e1ny p\u00e9lda arra, hogyan haszn\u00e1lj\u00e1k j\u00f3l ismert v\u00e1llalatok a BigQuery-t:<\/span><\/p>\n\n\n\n A BigQuery haszn\u00e1lat\u00e1nak megkezd\u00e9s\u00e9hez Google Cloud Platform fi\u00f3kkal kell rendelkezn\u00fcnk. Emellett \u00e9rten\u00fcnk kell az SQL-hez.<\/span><\/p>\n\n\n\n L\u00e9pj be az al\u00e1bbi oldalra <\/span>Google konzol<\/span><\/a>.<\/span><\/p>\n\n\n\n V\u00e1laszd ki a projektet, amin dolgozni fogsz. A projektek list\u00e1ja a Google Cloud Platform<\/strong> fejl\u00e9c mellett tal\u00e1lhat\u00f3 leg\u00f6rd\u00fcl\u0151 men\u00fcben tal\u00e1lhat\u00f3<\/span><\/p>\n\n\n\n A projekt kiv\u00e1laszt\u00e1sa ut\u00e1n v\u00e1laszd a Cloudshellt<\/strong> a jobb fels\u0151 sarokban.<\/span><\/p>\n\n\n\n Ekkor ez a n\u00e9zet jelenik meg:<\/span><\/p>\n\n\n\n Az adatb\u00e1zis \u00e1ttekint\u00e9s\u00e9hez \u00e9s az \u00e1ltal\u00e1nos inform\u00e1ci\u00f3k (s\u00e9ma, sorok sz\u00e1ma, m\u00e9ret) megtekint\u00e9s\u00e9hez haszn\u00e1ld az al\u00e1bbi parancsot:<\/span><\/p>\n\n\n \u00cdgy fog kin\u00e9zni a parancsra adott v\u00e1lasz:<\/span><\/p>\n\n\n\n A bq parancsokban a \u2013use_leagcy_sql<\/strong> jelz\u0151t fogjuk haszn\u00e1lni – ez a standard SQL-t \u00e1ll\u00edtja be a lek\u00e9rdez\u00e9s nyelvek\u00e9nt.<\/span><\/p>\n\n\n\n A lek\u00e9rdez\u00e9s \u00e9rv\u00e9nyes\u00edt\u00e9s\u00e9hez \u00e9s ellen\u0151rz\u00e9s\u00e9hez csak add hozz\u00e1 a dry_run<\/strong> flaget. Itt egy p\u00e9lda az ezzel a flaggel feltett k\u00e9rd\u00e9sre:<\/span><\/p>\n\n\n Amennyiben az adatb\u00e1zisba k\u00fcld\u00f6tt k\u00e9rd\u00e9s megfelel\u0151, akkor meg lehet tekinteni a v\u00e1laszt r\u00e1 az al\u00e1bbi faggel: \u2013dry_run<\/strong><\/span><\/p>\n\n\n \u00cdgy n\u00e9z a v\u00e1lasz egy fenti t\u00edpus\u00fa k\u00e9rd\u00e9sre:<\/span><\/p>\n\n\n\n Ahhoz, hogy megk\u00fcl\u00f6nb\u00f6ztess\u00fck az adatokat a rekordokt\u00f3l, haszn\u00e1lhatjuk a where<\/strong> klauzul\u00e1t, ami konkr\u00e9t \u00e9rt\u00e9kek, szab\u00e1lyok vagy szab\u00e1lyos kifejez\u00e9sek k\u00f6z\u00f6tt szelekt\u00e1l. Ha az adatb\u00e1zisb\u00f3l csak olyan rekordokat akarunk elk\u00fcl\u00f6n\u00edteni, amely tartalmazza a <\/span>raising<\/i><\/strong> sz\u00f3t, akkor az al\u00e1bbi parancsot kell haszn\u00e1lnunk.<\/span><\/p>\n\n\n El\u0151sz\u00f6r v\u00e9gre kell hajtani a k\u00e9rd\u00e9s \u00e9rv\u00e9nyess\u00e9gi vizsg\u00e1lat\u00e1t.<\/span><\/p>\n\n\n\n Ezut\u00e1n futtatni az al\u00e1bbi parancsot \u2013dry_run<\/strong> n\u00e9lk\u00fcl:<\/span><\/p>\n\n\n Ha ellen\u0151rizni szeretn\u00e9nk, hogy h\u00e1ny ilyen rekord van az adatb\u00e1zisban, akkor haszn\u00e1ljuk az \u00f6sszes\u00edt\u00e9si f\u00fcggv\u00e9nyt COUNT<\/strong>(<\/span>az a rekord, amelyet meg akarunk sz\u00e1ml\u00e1lni<\/span><\/i>). A lek\u00e9rdez\u00e9snek \u00edgy kell kin\u00e9znie:<\/span><\/p>\n\n\n Az egyes t\u00e1bl\u00e1zatokhoz saj\u00e1t nevet rendelhet\u00fcnk. Ebben az esetben van egy nev\u00fcnk, amely le\u00edrja, hogy mit \u00f6sszes\u00edtettek egy adott oszlopban. A lek\u00e9rdez\u00e9s eredm\u00e9nye \u00edgy n\u00e9z ki:<\/span><\/p>\n\n\n\n Tegy\u00fck fel, hogy meg akarunk tal\u00e1lni minden olyan elemet, amely a <\/span>raisin<\/i><\/strong> sz\u00f3t tartalmazza.<\/span> Ebben az esetben a LIKE<\/strong> kulcssz\u00f3t kell haszn\u00e1lni, hogy az adott kulcs alapj\u00e1n tudjunk keresni. <\/span><\/p>\n\n\n\n Ha a % jelet a keresett sz\u00f3 el\u00e9 tessz\u00fck, akkor a rendszer az el\u0151taggal, pl. dispraisin<\/strong> is figyelembe veszi az eredm\u00e9nyeket. Ha mindk\u00e9t oldalon el\u0151jelet adunk hozz\u00e1, p\u00e9ld\u00e1ul %raisin%, akkor el\u0151- \u00e9s ut\u00f3taggal egyar\u00e1nt el\u00e1tott eredm\u00e9nyeket is kapunk, p\u00e9ld\u00e1ul pl. dispraisin.<\/span><\/p>\n\n\n\n Ha egyn\u00e9l t\u00f6bb oszlopunk van \u00f6sszes\u00edtett f\u00fcggv\u00e9nnyel, akkor a GROUP BY<\/strong> paranccsal kell jelezn\u00fcnk, hogy mely oszlopok szerint szeretn\u00e9nk csoportos\u00edtani a sorokat. <\/span><\/p>\n\n\n A k\u00e9rd\u00e9sre adott eredm\u00e9ny \u00edgy n\u00e9z ki:<\/span><\/p>\n\n\n\n A BigQueryben rejl\u0151 potenci\u00e1lr\u00f3l a gyakorlatban gy\u0151z\u0151dhet\u00fcnk meg a legjobban. Ha szeretn\u00e9d megtudni, hogy milyen lehet\u0151s\u00e9geket k\u00edn\u00e1l a te \u00e9s az \u00fczleted sz\u00e1m\u00e1ra a Google Cloud (bele\u00e9rtve az elemz\u00e9si szolg\u00e1ltat\u00e1sokat), <\/span>akkor vedd fel a kapcsolatot egy hivatalos Google Cloud Premier Partnerrel<\/span><\/a>. <\/span><\/p>\n\n\n\n 500 doll\u00e1ros<\/strong> utalv\u00e1nyt kapsz a Google Cloud Platformon v\u00e9gzett els\u0151 tev\u00e9kenys\u00e9geidhez, \u00e9s a FOTC<\/strong> szakemberei seg\u00edtenek felfedezni a BigQuery lehet\u0151s\u00e9geit.<\/span><\/p>\n\n\n\nMi a BigQuery a Google-t\u00f3l?<\/h2>\n\n\n\n
Szerver n\u00e9lk\u00fcli technol\u00f3gia<\/h3>\n\n\n\n
Azonnali elemz\u00e9s<\/h3>\n\n\n\n
Rugalmas k\u00f6lts\u00e9gek<\/h3>\n\n\n\n
Nincs beavatkoz\u00e1s a forr\u00e1sk\u00f3dba<\/h3>\n\n\n\n
Automatikus biztons\u00e1gi ment\u00e9s<\/span><\/h3>\n\n\n\n
Adatok elemz\u00e9se k\u00fcl\u00f6nb\u00f6z\u0151 forr\u00e1sokb\u00f3l<\/span><\/h3>\n\n\n\n
A g\u00e9pi tanul\u00e1s (ML) t\u00e1mogat\u00e1sa<\/span><\/h3>\n\n\n\n
\u00dczleti elemz\u00e9s (BI)<\/span><\/h3>\n\n\n\n
A BigQuery haszn\u00e1lata – p\u00e9lda:<\/h2>\n\n\n\n
Hogyan kezdj\u00fcnk hozz\u00e1? L\u00e9p\u00e9sr\u0151l l\u00e9p\u00e9sre<\/h2>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\nbq show bigquery-public-data:samples.shakespeare<\/pre>\n\n\n\n
<\/figure>\n\n\n\nbq query --use_legacy_sql=false --dry_run \\\n'SELECT\nword\nFROM\n`bigquery-public-data`.samples.shakespeare\nLIMIT 5'<\/pre>\n\n\n\n
<\/figure>\n\n\n\nbq query --use_legacy_sql=false \\\n'SELECT\nword\nFROM\n`bigquery-public-data`.samples.shakespeare\nLIMIT 5'<\/pre>\n\n\n\n
<\/figure>\n\n\n\nbq query --use_legacy_sql=false --dry_run \\\n'SELECT\nword\nFROM\n`bigquery-public-data`.samples.shakespeare\nWHERE\nword = raising\nLIMIT 5'<\/pre>\n\n\n\n
<\/figure>\n\n\n\nbq query --use_legacy_sql=false \\\n'SELECT\nword\nFROM\n`bigquery-public-data`.samples.shakespeare\nWHERE\nword = raising\nLIMIT 5'<\/pre>\n\n\n\n
<\/figure>\n\n\n\nbq query --use_legacy_sql=false \\\n'SELECT\nCOUNT(word) as num_of_words\nFROM\n`bigquery-public-data`.samples.shakespeare\nWHERE\nword = raising<\/pre>\n\n\n\n
<\/figure>\n\n\n\nbq query --use_legacy_sql=false \\\n'SELECT\nword,\nCOUNT(word_count) AS count\nFROM\n`bigquery-public-data`.samples.shakespeare\nWHERE\nword LIKE %raisin%\nGROUP BY\nword'<\/pre>\n\n\n\n
<\/figure>\n\n\n\nGy\u0151z\u0151dj meg GCP \u00e9s a BigQuery \u00e1ltal ny\u00fajtott lehet\u0151s\u00e9gekr\u0151l<\/h2>\n\n\n\n