Experientiam meam personalem communico, quae utilia fuerint, ubi, et quando. Brevem conspectum et summam dabo, ut perspicuum sit quid et ubi ulterius investigandum sit — sed mea experientia hic prorsus subiectiva est; tua fortasse omnino alia est.
Cur interest linguas interrogationum nosse et uti posse? Scientia datorum (Data Science) essentialiter plures gradus clavis complectitur, et primus ac gravissimus (sine eo, nihil proderit!) est acquisitio vel extractio datorum. Saepe, data alicubi in aliqua forma iacent, et inde "extrahi" debent.
Linguae interrogationum sunt quae nobis permittunt haec ipsa data extrahere! Hodie, de linguis interrogationum quas utiles inveni vobis narrabo, et explicabo atque demonstrabo ubi et quomodo—et cur—ad discendum necessariae sint.
Tres erunt genera interrogationum datorum praecipua quae in hoc articulo tractabimus:
- Linguae interrogationum "normales" sunt quae homines plerumque intellegunt cum de lingua interrogationum, ut algebra relationali vel SQL, loquuntur.
- Linguae interrogationum programmaticae: exempli gratia, res Pythonicae sicut pandas, numpy, vel programmata testacea.
- Linguae interrogationum pro graphis scientiae et basi datorum graphorum.
Omnia hic scripta sunt simpliciter experientia personalis, quae utilia fuerunt, cum descriptionibus rerum et "cur opus fuerit" - quisque potest imaginari quomodo similes res oriri possint et se praeparare antea per intellegentiam harum linguarum antequam eis (celeriter) uti in proiecto vel etiam ad proiectum pervenire debeat ubi opus est.
Linguae interrogationum "ordinariae"
Linguae interrogationum usitatae sunt prorsus ea quae plerumque cogitamus cum de interrogationibus loquimur.
Algebra relationalis
Cur hodie algebra relationalis necessaria est? Ut bene intelligatur cur linguae interrogationis ita structuratae sint et ut eas conscie adhibeantur, necesse est nucleum subiacens intellegere.
Quid est algebra relationalis?
Definitio formalis haec est: algebra relationalis est systema clausum operationum in relationibus in modello datorum relationali. Humanius dictum, est systema operationum in tabulis ita ut eventus semper sit tabula.
Vide omnes operationes relationales in In hoc articulo ab Habr scripto, describimus cur hoc scire debeas et ubi utile esse possit.
Quid?
Incipis intellegere ex quibus linguae interrogationum constant et quae operationes post expressiones specificarum linguarum interrogationum latent — hoc saepe tibi praebet altiorem intellectum quid in linguis interrogationum operatur et quomodo.

Sumptum ex Articuli. Exemplum operationis: coniunctio, quae tabulas coniungit.
Materia ad studium:
In genere, multae materiae de algebra relationali et theoria exstant — Coursera, Udacity. Ingens quoque numerus materiarum in interreti exstat, etiam bonarum. Consilium meum personale: algebram relationalem optime intellegere debes — fundamentum omnium rerum est.
SQL

Sumptum ex articulus.
SQL essentialiter est implementatio algebrae relationalis — cum exceptione gravi: SQL est declarativum! Hoc est, cum interrogationem in algebra relationali scribis, essentialiter dicis quomodo calculandum sit — sed cum SQL, specificas quid extrahere vis, et deinde DBMS expressiones (efficaces) in algebra relationali generat (earum aequivalentia nobis nota est sub...). ).

Sumptum ex articulus.
Quid?
RDBMS: Oracle, Postgres, SQL Server, etc. adhuc fere ubique sunt, et incredibiliter magnae sunt probabilitates te cum illis interagere debere, quod significat te aut SQL legere (quod valde probabile est) aut scribere (quoque non improbabile) debere.
Quae legere et studere
Eaedem nexus supra (de algebra relationali) incredibilem materiae copiam continent, exempli gratia, .
Obiter, quid est NoSQL?
"Iterum dignum est notare vocabulum 'NoSQL' originem omnino spontaneam habere neque ullam definitionem generaliter acceptam aut institutionem scientificam sub se habere." Correspondens... in Habr.
Homines intellexerunt exemplar relationale plenum non necessarium esse ad multa problemata solvenda, praesertim ubi, exempli gratia, perfunctio maximi momenti est et quaedam interrogationes simplices cum aggregatione dominantur — ubi celeritas mensurarum computandi et eas in basim datorum scribendi maximi momenti est. Pleraque proprietates relationales non solum superfluae, sed etiam noxiae se ostenderunt — cur aliquid normalizemus si rem nobis (pro certo opere) maximi momenti — perfunctionem — corrumpet?
Schemata flexibilia saepe etiam necessaria sunt loco schematum mathematicorum fixorum exempli relationalis classici — quod evolutionem applicationum valde simplificat cum systema disponere et celeriter laborare incipere, eventus tractando, vel cum schema et genera datorum repositorum non tam magni momenti sunt.
Exempli gratia, systema peritum construimus et volumus informationes de dominio quodam una cum quibusdam metadatis servare. Fortasse nescimus omnes campos et simpliciter JSON pro singulis documentis servamus. Hoc nobis ambitum valde flexibilem praebet ad exemplar datorum expandendum et celeriter iterandum. Itaque, hoc in casu, NoSQL etiam praeferendus et legibilius esset. Exemplum documenti (ex uno ex meis proiectis, ubi NoSQL erat ubi opus erat).
{"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}
Plura legere potes de NoSQL.
Quid studendum est?
Hic, tantum opus tuum diligenter perscrutari debes, quas proprietates habeat, et quae systemata NoSQL exstent quae huic descriptioni respondeant — deinde hoc systema studere incipere.
Linguae interrogationum scriptorum
Primo aspectu, videtur Python nihil omnino cum hoc habere commune – lingua programmandi est, et non de interrogationibus omnino.

- Pandas verum cultrum Helveticum scientiae datorum est; ingens copia transformationis, aggregationis, et cetera datorum in eo fit.
- Numpy - computationes vectoriales, matrices et algebra linearis ibi.
- Scipy - multae mathematicae in hoc fasciculo sunt, praesertim statisticae.
- Jupyter Lab — multae exploratoriae analyses datorum bene in libellis electronicis cadunt — utile scire.
- Petitiones — cum rete laborantes.
- Pyspark inter ingeniarios datorum valde populare est; probabiliter aut cum hoc aut cum Spark interagere debebis, propter eorum popularitatem.
- *Selenium perutile est ad notitias ex paginis interretialibus et opibus colligendas; interdum nulla alia via est ad notitias obtinendas.
Consilium meum principale: Pythonem disce!
pandas
Exempli gratia, hunc codicem sumamus:
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'}))Essentialiter, videmus codicem in exemplar SQL classicum congruere.
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_nameSed pars magni momenti est hunc codicem partem esse scripti et canalis; nos essentialiter interrogationes in canalem Pythonicum inserimus. Hoc in casu, lingua interrogationum ex bibliothecis sicut Pandas vel pySpark venit.
In genere, in pySpark similem transformationis datorum per linguam interrogationis videmus, hoc in spiritu:
df.filter(df.trip_type = “return”)
.groupby(“day”)
.agg({duration: 'mean'})
.sort()Ubi et quid legendum est
De Pythone in genere Materias studiorum inveni. Ingens numerus documentorum didacticorum in interreti invenitur. , et cursus de (et etiam ab ipso Summa summarum, materiae hic facile per Google investigantur, et si unum fasciculum eligere deberem cui operam dare vellem, "pandas" scilicet esset. Multa quoque materia de compositione DS et Python invenitur. .
Shell ut lingua interrogationis
Multa ex inceptis tractationis et analysis datorum quibus laboravi sunt essentialiter scripta testacea quae codicem Pythonicum et Javae, necnon ipsa mandata testacea, invocant. Ergo, canales in Bash/zsh/etc. plerumque videri possunt ut interrogationes altioris gradus (i.e., cyclos ibi inserere potes, sed hoc non est typicum pro codice scientiae datorum in linguis testaceis). Exemplum simplex hic est: Necesse erat mihi Wikidata QID et nexus completos ad wikis Russicam et Anglicam mappare. Ad hoc faciendum, interrogationem simplicem scripsi utens mandatis Bash et scripto Pythonico simplici pro exitu, quod sic composui:
pv “data/latest-all.json.gz” |
unpigz -c |
jq --stream $JQ_QUERY |
python3 scripts/post_process.py "output.csv"
quibus
JQ_QUERY = 'select((.[0][1] == "sitelinks" and (.[0][2]=="enwiki" or .[0][2] =="ruwiki") and .[0][3] =="title") or .[0][1] == "id")' Hoc erat, re vera, totum ductus qui mappationem necessariam creavit, ut videre possumus, omnia in modo fluxu operabantur:
- `pv filepath` — indicem progressus secundum magnitudinem fasciculi dat et contenta eius transmittit.
- `unpigz -c` partem archivi legit et `jq` reddidit.
- `jq` cum clave `-stream` statim exitum produxit et ad postprocessorem (sicut in primo exemplo) in Python tradidit.
- Interne, postprocessor est machina status simplex quae exitum formattat.
Resultatum est ductus complexus, modo fluminis in magnis datis (0.5 TB) operans, sine magnis opibus, et ex ductu simplici et paucis instrumentis constructus.
Aliud consilium magni momenti: bene et efficaciter in terminali laborare et in bash/zsh/etc scribere posse.
Ubi utile erit? Fere ubique—multa materia studiorum in interreti invenitur. Praesertim hic. articulus meus prior.
Scripta R
Iterum, lector fortasse exclamabit, "Bene, tota lingua programmandi est!" Et sane, recte diceret. Attamen, R plerumque in contextu occurri ubi, re vera, linguae interrogationum simillima erat.
R est ambitus computationis statisticae et lingua ad computationem statisticam et visualisationem (secundum... ).

Captus Obiter, suadeo, bona materia est.
Cur peritus datorum linguam R scire debet? Saltem, quia magna pars hominum extra IT est qui analysin datorum in R faciunt. Eos in his locis conveni:
- Sector pharmaceuticus.
- Biologorum.
- Sector pecuniarius.
- Homines educatione pure mathematica praediti, statisticis tractantes.
- Modela statistica et machinalis doctrinae specializata (quae saepe tantum in versione proprietaria ut fasciculus R inveniuntur).
Cur revera lingua interrogationum est? Forma frequentissima, essentialiter interrogatio est ad exemplar creandum, inter quas data legenda et parametros interrogationum (exempli) specificandos. Visualizatio datorum in fasciculis sicut ggplot2 etiam forma scribendi interrogationes est.
Exempla interrogationum ad visualizationem
ggplot(data = beav,
aes(x = id, y = temp,
group = activ, color = activ)) +
geom_line() +
geom_point() +
scale_color_manual(values = c("red", "blue"))In genere, multae notiones ex R ad fasciculos Pythonicos, ut pandas, numpy, vel scipy, migraverunt, ut dataframes et data vectorization — ergo in universum, multa in R tibi nota et commoda videbuntur.
Multae sunt fontes investigandae, exempli gratia, .
Graphica scientiae
Mea hic experientia paulo insolita est, cum saepe cum graphis cognitionis et linguis interrogationum graphicarum laboro. Itaque, fundamenta breviter tractemus; haec pars paulo exotica est.
In classicis databasibus relationalibus schema fixum habemus, sed hic schema flexibile est, unumquodque praedicatum revera "columna" est et etiam plus.
Finge te personam imitari et res principales describere velle; exempli gratia, personam specificam, Douglas Adams, sumamus et hac descriptione ut fundamento utamur.

Si relationalem basim datorum uti vellemus, ingentem tabulam vel tabulas cum ingenti numero columnarum creare deberemus, quarum pleraeque NULLAE essent vel quodam valore falso implicito implerentur; exempli gratia, vix credibile est multos ex nobis inscriptionem in Bibliotheca Nationali Coreana habere - scilicet, eas in tabulis separatis ponere possemus, sed hoc denique conatus esset ad schema logicum flexibile cum praedicatis fingendum, relationali fixo utendo.

Finge igitur omnia data vel in forma graphi vel in forma expressionum logicarum binariarum et unariarum reponi.
Ubi hoc omnino invenire potes? Primo, cum laboras cum ... et cum quibuslibet basi datorum graphorum vel datis conexis.
Infra sunt linguae interrogationum principales quibus uti et cum quibus laborare debui.
SPARQL
wiki:
SPARQL ( ex Protocollum SPARQL et Lingua Interrogationis RDF) - , secundum exemplar praesentatum Et ut has interrogationes et responsa ad eas transmittant. SPARQL est commendatio et una ex technologiis .
Re vera, est lingua interrogationum pro praedicatis logicis unariis et binariis. Simpliciter specificas quid fixum sit in expressione logica et quid non (valde simplicius).
Ipsa basis datorum RDF (Resource Description Framework), super quam interrogationes SPARQL peraguntur, triplex est... object, predicate, subject — et quaestio tripleta necessaria secundum restrictiones specificatas deligit, hoc modo: invenire X talem ut p_55(X, q_33) verum sit — ubi, scilicet, p_55 est quaedam relatio cum ID 55, et q_33 est objectum cum ID 33 (haec est tota fabula, iterum omnibus possibilibus rebus omissis).
Exemplum repraesentationis datorum:

Hic sunt imagines et exemplum cum terris. .
Exemplum interrogationis fundamentalis

Re vera, valorem variabilis ?terra invenire volumus talem ut pro praedicato
`member_of`, verum est `member_of(?country,q458), et q458 esse identificationem Unionis Europaeae.
Exemplum verae interrogationis SPARQL intra machinam Python:

Typice, SPARQL legere potius quam scribere mihi necesse fuit—in hac re, utilis est peritia linguam saltem ad gradum fundamentalem intellegere ut accurate intelligam quomodo data reperiantur.
Multae materiae ad studendum in interreti inveniuntur: exempli gratia, hic и Ipse constructiones et exempla specifica per Google quaero, et hoc satis est pro nunc.
Linguae interrogationum logicarum
Plura de hac re in articulo meo legere potes. Hic, breviter tantum disseremus cur linguae logicae ad interrogationes scribendas tam aptae sint. Essentialiter, RDF est simpliciter series enuntiationum logicarum formae p(X) et h(X,Y), et interrogatio logica hanc formam habet:
output(X) :- country(X), member_of(X,“EU”).
Hic agimus de creando novo praedicato `output/1` (`/1` significat unarium), dato quod pro X verum est `country(X)` — i.e., X est `country` et etiam `member_of(X,“EU”).
Id est, hoc in casu, et data et regulae eodem modo praesentantur, quod permittit problemata facillime et bene modelare.
Ubi in industria convenistis?: totum magnum proiectum cum societate quae interrogationes tali lingua scribit, necnon in proiecto currenti in nucleo systematis - res satis exotica videretur, sed interdum accidit.
Exemplum fragmenti codicis in lingua logica quae wikidata tractat:

Subsidia: Duo nexus ad hodiernam linguam programmandi logicam "Answer Set Programming" praebebo—studium eius commendo:
Source: www.habr.com
