Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
Kei te korero ahau ki a koe mai i te wheako whaiaro he aha te whai hua ki hea me te wa. He tirohanga whanui me te tuhinga whakapae, kia marama ai he aha me te waahi ka taea e koe te keri atu - engari kei konei taku wheako whaiaro motuhake, tera pea he rereke nga mea katoa mo koe.

He aha te mea nui ki te mohio me te kaha ki te whakamahi i nga reo patai? I tona uho, he maha nga waahanga mahi nui o te Pūtaiao Raraunga, a ko te mea tuatahi me te mea nui (ki te kore, karekau he mea e whai hua!) Ko te tango, te tango raraunga ranei. I te nuinga o nga wa, kei te noho nga raraunga ki tetahi waahi me te hiahia kia "tangohia" mai i reira. 

Ma nga reo patai ka taea e koe te tango i enei raraunga! Na i tenei ra ka korero atu ahau ki a koe mo nga reo patai i whai hua ki ahau ka whakaatu atu ahau ki a koe me te whakaatu ki a koe te waahi me te pehea - he aha te take me ako.

E toru nga poraka matua mo nga momo patai raraunga, ka korerohia e tatou i tenei tuhinga:

  • Ko nga reo patai "Paerewa" ko nga mea e maarama ana i te wa e korero ana mo te reo patai, penei i te taurangi hononga, te SQL ranei.
  • Te tuhi i nga reo patai: hei tauira, Python things pandas, numpy or shell scripting.
  • Nga reo patai mo nga kauwhata matauranga me nga papaa raraunga kauwhata.

Ko nga mea katoa i tuhia ki konei he wheako whaiaro, he aha te mea whai hua, me te whakaahuatanga o nga ahuatanga me te "he aha i hiahiatia ai" - ka taea e te katoa te whakamatau me pehea e puta ai nga ahuatanga penei me te ngana ki te whakarite mo ratou i mua ma te mohio ki enei reo ​i mua i to tono (tere) mo tetahi kaupapa, tae atu ranei ki tetahi kaupapa e hiahiatia ana.

"Paerewa" nga reo patai

Ko nga reo paatai ​​​​paerewa he rite tonu ki ta tatou e whakaaro ana mo a raatau korero mo nga patai.

Taurangi hononga

He aha i hiahiatia ai te taurangi hononga i enei ra? Kia pai ai te mohio ki te take i hangaia ai nga reo patai ki tetahi huarahi me te whakamahi marie, me maarama koe ki te kaupapa o roto.

He aha te taurangi hononga?

Ko te whakamāramatanga ōkawa e whai ake nei: ko te taurangi hononga he punaha kati o nga mahi mo nga hononga i roto i te tauira raraunga hononga. Ki te mea he iti ake te ahua o te tangata, he punaha whakahaere tenei i runga i nga teepu penei he tepu te hua.

Tirohia nga mahinga hononga katoa i roto tenei tuhinga mai i a Habr - i konei ka whakaahuahia he aha koe me mohio me te waahi ka whai waahi.

He aha?

Ko te tiimata ki te maarama he aha nga reo patai me nga mahi kei muri i nga korero i roto i nga reo patai motuhake ka nui ake te maarama ki nga mahi i roto i nga reo patai me pehea.

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
I tangohia mai tenei tuhinga. He tauira o te mahi: hono, e hono ana i nga ripanga.

Nga rauemi mo te ako:

He akoranga whakataki pai mai i Stanford. I te nuinga o te waa, he maha nga rauemi mo te taurangi hononga me te ariā - Coursera, Udacity. He nui ano nga rauemi kei runga ipurangi, tae atu ki te pai akoranga mātauranga. Ko aku tohutohu ake: me tino mohio koe ki te taurangi hononga - koinei te putake o nga kaupapa.

SQL

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
I tangohia mai tenei tuhinga.

Ko te SQL he whakatinanatanga o te taurangi hononga - me tetahi whakatupato nui, he korero a SQL! Arā, i te wa e tuhi uiui ana koe ki te reo o te taurangi hononga, ka tino kii koe me pehea te tatau - engari ma te SQL ka tohua e koe nga mea e hiahia ana koe ki te tango, katahi ka whakaputahia e te DBMS nga korero (whai hua) i roto i te reo o te taurangi hononga (to ratou ko te taurite e mohiotia ana ki a tatou Te kaupapa a Codd).

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
I tangohia mai tenei tuhinga.

He aha?

Ko nga DBMS hononga: Oracle, Postgres, SQL Server, me etahi atu kei te tata tonu ki nga waahi katoa, he nui te tupono ka whai waahi koe ki te taunekeneke ki a raatau, ko te tikanga me panui koe i te SQL (he tino pea) ka tuhi ranei ( kare ano pea).

He aha te panui me te ako

E ai ki nga hononga o runga ake nei (mo te taurangi hononga), he nui te nui o nga rauemi, hei tauira, tenei.

Ma te ara, he aha te NoSQL?

"He mea tika kia whakanuia ano ko te kupu "NoSQL" he takenga noa iho, a, kaore he whakamaramatanga e whakaaetia ana, he umanga pūtaiao ranei kei muri." E rite ana tuhinga i runga i a Habr.

Inaa, i mohio nga tangata kaore e hiahiatia he tauira hononga katoa hei whakaoti rapanga maha, ina koa mo te hunga, hei tauira, he mea tino nui te mahi me etahi patai ngawari me te whakahiato - he mea nui kia tere te tatau i nga ine me te tuhi ki te pātengi raraunga, a ko te nuinga o nga ahuatanga he hononga ka puta ko te kore noa iho, engari he kino ano hoki - he aha te mea ka whakanoatia tetahi mea mena ka pahuatia te mea tino nui mo tatou (mo etahi mahi motuhake) - te hua?

Ano hoki, he maha nga wa e hiahiatia ana nga aronuinga ngawari hei utu mo nga aronuinga pangarau kua whakaritea o te tauira whanaungatanga puāwai - a he tino whakangawari tenei i te whakawhanaketanga tono ina he mea nui ki te tuku i te punaha me te timata ki te mahi tere, ki te tukatuka i nga hua - te aronuinga me nga momo raraunga rongoa. ehara i te mea tino nui.

Hei tauira, kei te hangaia e matou he punaha tohunga me te hiahia ki te penapena korero mo tetahi rohe motuhake me etahi korero meta - kaore pea matou e mohio ki nga mara katoa ka penapena noa JSON mo ia rekoata - ka hoatu he taiao tino ngawari mo te whakawhānui i nga raraunga. tauira me te tere tere - na i tenei ahuatanga, ka pai ake te NoSQL me te panui. Tauira urunga (mai i tetahi o aku kaupapa kei te tika a NoSQL ki te waahi e hiahiatia ana).

{"en_wikipedia_url":"https://en.wikipedia.org/wiki/Johnny_Cash",
"ru_wikipedia_url":"https://ru.wikipedia.org/wiki/?curid=301643",
"ru_wiki_pagecount":149616,
"entity":[42775,"Джонни Кэш","ru"],
"en_wiki_pagecount":2338861}

Ka taea e koe te panui atu konei mo NoSQL.

He aha te ako?

I konei, engari, me ata tirotiro koe i to mahi, he aha nga taonga kei a ia me nga punaha NoSQL e waatea ana e pai ana ki tenei whakaahuatanga - katahi ka timata ki te ako i tenei punaha.

Nga Reo Uiui Tuhituhi

I te tuatahi, te ahua nei, he aha te mahi a Python ki a ia i te nuinga - he reo whakamaoriori, kaua rawa mo nga patai.

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga

  • Ko te Pandas he maripi a te Ope Taua a Swiss mo te Raraunga Raraunga; he nui te hurihanga raraunga, te whakahiato, aha atu.
  • Numpy - tātai vector, matrices me te taurangi rārangi kei reira.
  • Scipy - he maha nga pangarau kei roto i tenei kete, ina koa nga tatauranga.
  • Te taiwhanga Jupyter - he maha nga tātaritanga raraunga torotoro e uru pai ana ki nga rorohiko pona - he pai ki te mohio.
  • Tono - mahi me te whatunga.
  • He tino rongonui a Pyspark i waenga i nga miihini raraunga, tera pea ka uru koe ki te taunekeneke ki tenei, ki a Spark ranei, na to raatau rongonui.
  • *Selenium - tino whai hua mo te kohikohi raraunga mai i nga waahi me nga rauemi, i etahi wa kaore he huarahi ke atu ki te tiki raraunga.

Ko aku tohutohu matua: ako te Python!

Pandawa

Me tango te waehere e whai ake nei hei tauira:

import pandas as pd
df = pd.read_csv(“data/dataset.csv”)
# Calculate and rename aggregations
all_together = (df[df[‘trip_type’] == “return”]
    .groupby(['start_station_name','end_station_name'])
                  	    .agg({'trip_duration_seconds': [np.size, np.mean, np.min, np.max]})
                           .rename(columns={'size': 'num_trips', 
           'mean': 'avg_duration_seconds',    
           'amin': min_duration_seconds', 
           ‘amax': 'max_duration_seconds'}))

Ko te mea nui, ka kite tatou ka uru te waehere ki te tauira SQL matarohia.

SELECT start_station_name, end_station_name, count(trip_duration_seconds) as size, …..
FROM dataset
WHERE trip_type = ‘return’
GROUPBY start_station_name, end_station_name

Engari ko te mea nui ko tenei waehere he waahanga o te tuhinga me te paipa; inaa, kei te whakauru tatou i nga patai ki roto i te pipeline Python. I tenei ahuatanga, ka tae mai te reo patai ki a matou mai i nga whare pukapuka penei i a Pandas, pySpark ranei.

I te nuinga o te waa, i roto i te pySpark ka kite tatou i te ahua o te huringa raraunga ma te reo patai i runga i te wairua o:

df.filter(df.trip_type = “return”)
  .groupby(“day”)
  .agg({duration: 'mean'})
  .sort()

Kei hea me te aha hei panui

I runga i te Python ake i te nuinga ehara i te raruraru kimi rauemi hei ako. He maha nga akoranga i runga ipurangi porangi, pySpark me nga akoranga korakora (me tona ake ano DS). I roto i te katoa, he pai nga korero kei konei mo te rapu, a mena ka kowhiria e au tetahi kete hei aro ki runga, he pandas tera. Mo te huinga o nga rauemi DS+Python hoki nui rawa.

Anga hei reo patai

He maha nga kaupapa tukatuka raraunga me te tātari i mahihia e au, ko te mea, ko nga tuhinga anga e kii ana i te waehere i roto i te Python, Java, me te anga te whakahau. Na reira, i te nuinga o te waa, ka taea e koe te whakaaro ki nga paipa i roto i te bash/zsh/etc hei momo patai taumata-tiketike (ka taea e koe, ko te tikanga, ka takahuri nga mea kei reira, engari ehara tenei i te mea mo te waehere DS i roto i nga reo anga), me hoatu he tauira ngawari - I hiahia ahau ki te mahi mapi QID o wikidata me nga hononga katoa ki nga wikis Russian me te reo Ingarihi, mo tenei i tuhia e ahau he tono ngawari mai i nga whakahau i roto i te bash me te putanga i tuhia e ahau he tuhinga ngawari ki te Python, i tuhia e au. whakahuihui penei:

pv “data/latest-all.json.gz” | 
unpigz -c  | 
jq --stream $JQ_QUERY | 
python3 scripts/post_process.py "output.csv"

te wahi

JQ_QUERY = 'select((.[0][1] == "sitelinks" and (.[0][2]=="enwiki" or .[0][2] =="ruwiki") and .[0][3] =="title") or .[0][1] == "id")' 

Ko tenei, ko te paipa katoa i hanga te mapi e hiahiatia ana; e kite ana tatou, i mahi nga mea katoa i roto i te aratau rere:

  • pv filepath - ka hoatu he pae ahunga whakamua i runga i te rahi o te konae ka tuku i ona ihirangi ki mua
  • unpigz -c panuitia tetahi wahi o te puranga ka hoatu ki a jq
  • jq me te matua - ka puta tonu te awa i te hua ka tukuna ki te poutukatuka (penei me te tauira tuatahi) i roto i te Python
  • i roto, ko te poutukatuka he miihini ahua ngawari i whakahōputu te putanga 

I te katoa, he paipa uaua e mahi ana i te aratau rere i runga i nga raraunga nui (0.5TB), kaore he rauemi nui me te hanga mai i te paipa ngawari me nga taputapu e rua.

Ko tetahi atu tohu nui: kia pai te mahi me te whai hua i roto i te tauranga me te tuhi bash/zsh/etc.

Ka whai hua ki hea? Ae, tata ki nga waahi katoa - ano, he nui nga rauemi hei ako i runga i te Ipurangi. Ina koa, konei tenei taku tuhinga o mua.

R tuhi tuhi

Ano, ka karanga pea te kaipanui - kaati, he reo hotaka katoa tenei! A ko te tikanga, ka tika ia. Heoi, i te nuinga o te wa ka tutaki ahau ki a R i roto i tetahi horopaki penei, he tino rite ki te reo patai.

Ko te R he taiao rorohiko tatauranga me te reo mo te rorohiko pateko me te whakakitenga (e ai ki tenei).

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
tangohia mai i konei. Ma te ara, ka tūtohu ahau, he rauemi pai.

He aha te take me mohio te kaiputaiao raraunga ki a R? I te iti rawa, na te mea he paparanga nui o te hunga ehara i te IT e tarai ana i nga raraunga i roto i te R. I kitea e au i nga waahi e whai ake nei:

  • Te waahanga rongoa.
  • Kaitaiao.
  • Te rängai pütea.
  • Nga tangata whai matauranga pangarau pono e mahi ana i nga tatauranga.
  • Ko nga tauira tauanga motuhake me nga tauira ako miihini (he maha ka kitea i roto i te putanga a te kaituhi hei kete R).

He aha te take he reo patai? I roto i te ahua e kitea ana i te nuinga o te wa, he tono ki te hanga tauira, tae atu ki te panui raraunga me te whakatika i nga tawhā uiui (tauira), tae atu ki te whakaata i nga raraunga i roto i nga kete penei i te ggplot2 - he momo tuhi patai ano tenei. .

Tauira patai mo te tirohanga

ggplot(data = beav, 
       aes(x = id, y = temp, 
           group = activ, color = activ)) +
  geom_line() + 
  geom_point() +
  scale_color_manual(values = c("red", "blue"))

I te nuinga o te waa, he maha nga whakaaro mai i R kua heke ki roto i nga kohinga python penei i te pandas, numpy, scipy ranei, penei i nga anga raraunga me te vectorization raraunga - no reira he maha nga mea i roto i te R ka ahua mohio me te watea ki a koe.

He maha nga puna hei ako, hei tauira, tenei.

Kauwhata matauranga

I konei he wheako rereke taku, na te mea he maha nga wa ka mahi au me nga kauwhata matauranga me nga reo patai mo nga kauwhata. No reira, kia poto noa te korero mo nga kaupapa, na te mea he ahua ke atu tenei waahanga.

I roto i nga papaaapapa hononga puāwaitanga, he aronuinga tuturu ta tatou, engari i konei he ngawari te aronuinga, ko ia tohu he "tīwae" me etahi atu.

Whakaarohia kei te whakatauira koe i tetahi tangata me te hiahia ki te whakaahua i nga mea matua, hei tauira, me tango tetahi tangata motuhake, ko Douglas Adams, ka whakamahi i tenei whakaahuatanga hei turanga.

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
www.wikidata.org/wiki/Q42

Mēnā ka whakamahia e mātou he pātengi raraunga hononga, me hanga he ripanga nui, he ripanga ranei me te maha o nga pou, ko te nuinga he NULL, ka whakakiia ranei ki etahi uara Heke taunoa, hei tauira, kaore pea he maha o tatou he te urunga ki roto i te whare pukapuka a motu o Korea - o te akoranga, ka taea e taatau te whakanoho ki roto i nga teepu motuhake, engari ko te mutunga he ngana ki te whakatauira i tetahi ara iahiko ngawari me nga tohu ma te whakamahi i tetahi hononga honohono.

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
No reira, whakaaroa ka penapena nga raraunga katoa hei kauwhata, hei whakaaturanga boolean rua ranei.

Kei hea koe e tutaki ai ki tenei? Tuatahi, mahi tahi me wiki raraunga, me nga papaa raraunga kauwhata, raraunga hono ranei.

Ko enei e whai ake nei ko nga reo patai matua i whakamahia e au me te mahi.

SPARQL

Wiki:
SPARQL (recursive acronym i Eng. Kawa SPARQL me te Reo Uiui RDF) - reo uiui raraunga, e tohuhia ana e te tauira RDFA kawa ki te tuku i enei tono me te whakautu ki a raatau. Ko te SPARQL he taunakitanga W3C Consortium me tetahi o nga hangarau tukutuku semantic.

Engari i roto i te mooni he reo patai mo nga tohu tuatahi me nga tohu-rua. Kei te tohu noa koe he aha te mea kua whakaritea i roto i te whakaaturanga Boolean me te mea kaore (he tino ngawari).

Ko te turanga RDF (Anga Whakaahuatanga Rauemi) ake, kei reira nga uiui SPARQL e mahia ana, he takitoru. object, predicate, subject - a ka kowhiria e te patai nga taarua e hiahiatia ana i runga i nga here kua tohua i roto i te wairua: kimihia he X kia tika ai te p_55(X, q_33) - inaa, ko te p_55 tetahi momo hononga ki te ID 55, me te q_33 he ahanoa me te ID 33 (i konei me te katoa o nga korero, ka waiho ano nga momo korero katoa).

He tauira o te whakaaturanga raraunga:

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga
Ko nga pikitia me nga tauira me nga whenua kei konei mai i konei.

Tauira Uiui Taketake

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga

Ko te tikanga, e hiahia ana matou ki te kimi i te uara o te taurangi ?whenua penei mo te whakatauira
member_of, he pono ko member_of(?whenua,q458) me q458 te ID o te Kotahitanga o Europi.

He tauira mo te patai SPARQL i roto i te miihini python:

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga

Ko te tikanga, me panui au i te SPARQL kaua ki te tuhi - i tera ahuatanga, tera pea he pukenga whai hua ki te mohio ki te reo i te iti rawa i te taumata taketake kia mohio ai me pehea te tiki raraunga. 

He nui nga rauemi hei ako ipurangi: hei tauira, i konei tenei и tenei. I te nuinga o te wa ka google au i nga hoahoa me nga tauira motuhake, a he nui mo tenei wa.

Nga reo patai arorau

Ka taea e koe te panui atu mo te kaupapa i roto i taku tuhinga konei. Na konei, ka tirohia poto noa he aha e pai ai nga reo arorau mo te tuhi patai. Ko te tikanga, he huinga tauākī arorau noa te RDF o te puka p(X) me te h(X,Y), a ko te uiui arorau te ahua e whai ake nei:

output(X) :- country(X), member_of(X,“EU”).

I konei e korero ana matou mo te hanga i tetahi putanga tohu hou/1 (/1 te tikanga unary), engari mo X he pono tera whenua(X) - ara, he whenua a X me te mema_o(X,"EU ").

Arā, i roto i tenei take, ko nga raraunga me nga ture e whakaatuhia ana i roto i te ahua kotahi, e taea ai e tatou te whakatauira i nga raruraru tino ngawari me te pai.

I tutaki koe ki hea i roto i te ahumahi?: he kaupapa nui katoa me tetahi kamupene e tuhi patai ana i roto i te reo penei, me te kaupapa o naianei i roto i te kaupapa o te punaha - he ahua kee tenei, engari i etahi wa ka tupu.

He tauira o te wahanga waehere i roto i te reo arorau tukatuka wikidata:

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga

Rauemi: Ka hoatu e ahau etahi hononga ki konei ki te reo hootaka arorau o te ao hou Whakautu Tautuhi Papatonotanga - Ka tūtohu ahau kia ako koe:

Nga Panui a te Kairangataiao Raraunga: He Arotake Whaiaro mo nga Reo Uiui Raraunga

Source: will.com

Tāpiri i te kōrero