DBeaver
 sql >> база данни >  >> Database Tools >> DBeaver

Бързо заредете данни за Covid-19 с hana_ml и вижте с DBeaver

Е, анализирането на разпространението на коронавируса SARS-CoV-2 не беше моят мечтан случай на употреба . Но въз основа на отговорите на статията на Ferry Djaja за проследяване на коронавирус COVID-19 почти в реално време със статията на SAP HANA XSA реших да добавя и моите две гроши.

[Актуализирано на 20-03-30 с променените връзки към изходните данни; и изходът на новата карта въз основа на новата детайлност на данните. Благодаря Дъглас Малтби за коментара ви!]

В публикацията си в блога Фери използва JavaScript в SAP HANA XSA, за да извлече данните от CSV файлове, актуализирани ежедневно от университета Джон Хопкинс.

Бих искал да ви покажа как можете да изтеглите и заредите тези файлове в SAP HANA, като използвате само няколко реда код благодарение на SAP HANA Python Client API за машинно обучение (hana_ml пакет).

Някои хора бяха объркани с визуализацията на картата в края — моля, имайте предвид, че тази статия се фокусира върху техническата употреба, свързваща различни компоненти, а не върху извършването на задълбочен анализ на данни за коронавирус.

Вземете среда на Python, напр. Юпитер

За това ще използвам Jupyter в контейнера на Docker. Моля, вижте предишната ми публикация Разбиране на контейнерите (част 05):споделени файлове между хоста и контейнерите, ако не сте запознати как да го стартирате. Освен това можете да направите всички същите стъпки по-долу от всяка друга среда на Python.

И така, имам моя контейнер myjupyter01 бягане. Свързан съм с потребителския интерфейс на Jupyter, както е описано в предишния блог.

Инсталирайте hana_ml

Изображението на Jupyter, което използвах от регистъра на Docker Hub, беше jupyter/minimal-notebook . Той вече съдържа някои популярни пакети за обработка на данни, като pandas .

Но освен това трябва да инсталирам hana_ml , който в текущата си версия 1.0.8 е достъпен в хранилището на PyPI:https://pypi.org/project/hana-ml/.

Командата за стартиране на инсталацията е python -m pip install hana_ml , но тъй като го стартирам от бележника на Jupyter с ядрото на Python3, трябва да го стартирам с ! в началото:

!python -m pip install hana_ml

Очевидно тази стъпка на инсталиране трябва да се направи само веднъж. Няма нужда да го стартирате отново в същия контейнер, напр. при презареждане на най-новите файлове.

Използвайте pandas за импортиране на файлове с данни

Нека импортираме същите три файла (confirmed , deaths , recovered ) от https://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data/csse_covid_19_time_series, както Фери използва в своя пример.

import hana_ml, pandas

# Links updated on 2020-03-22
df_confd = pandas.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')
df_death = pandas.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv')
df_recvd = pandas.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv')

#Links from before March 22nd
#df_confd = pandas.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv')
#df_death = pandas.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Deaths.csv')
#df_recvd = pandas.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Recovered.csv')

Както можете да видите от визуализацията на рамката с данни Pandas, тя изброява само държави или провинции с потвърдени случаи и всеки ден новата колона се добавя с най-новите данни от предишния ден. Редове се добавят, когато първият случай(и) се потвърди в новия регион.

Използвайте pandas за повторно форматиране на рамката с данни

Преди да запазим данните в SAP HANA, нека:

  1. Премахнете всички колони с дата, с изключение на последната,
  2. Преименувайте последната колона от действителната дата (като днешната 3/10/20 до Confirmed ).
df_confd_latest=df_confd.drop(df_confd.columns[4:len(df_confd.columns)-1], axis='columns')

df_confd_latest.columns = [*df_confd_latest.columns[:-1],'Confirmed']

Използвайте hana_ml за запазване на данните в таблицата SAP HANA

Сега нека се свържа с моя екземпляр на SAP HANA Express с потребителя hanaml който вече съществува там...

cc=hana_ml.dataframe.ConnectionContext('12.34.567.890', 39015, 'hanaml', 'MyPasswordReusedEverywhere')

…и конвертирайте рамката с данни на Pandas df_confd_latest в рамка от данни на HANA hdf_confd .

hdf_confd=hana_ml.dataframe.create_dataframe_from_pandas(cc, df_confd_latest, 'df_confd', force=True)

След като рамката с данни HANA е създадена:

  1. Физическа таблица с колони се създава в HANA и там се вмъкват данни от рамката с данни на Pandas,
  2. HANA рамка с данни hdf_confd в Python не съхранява никакви данни във вашия лаптоп, а само сочи към таблица HANAML.df_confd в паметта на сървъра на SAP HANA и всички операции на Python върху рамката с данни HANA се изпълняват физически в HANA db без преместване на данни между сървъра и клиента,
  3. За да покажем резултата от всякакви операции, трябва да приложим collect() метод за преобразуване на рамката с данни HANA в Pandas (и в резултат на това за пренасяне на данни от HANA db сървър на локалния клиент).

Използвайте DBeaver, за да проверите данните в SAP HANA…

Може би си спомняте, че вече използвах DBeaver — безплатният инструмент за база данни, поддържащ SAP HANA — в предишната ми публикация „GeoArt с SAP HANA и DBeaver“.

Сега го използвам отново и наистина мога да намеря таблицата df_confd в схемата HANAML с всички данни от изходната рамка с данни на Pandas.

...и направете пространствена визуализация

Тъй като таблицата съдържа колони за географска ширина и дължина, мога да визуализирам засегнатите държави/щати направо от DBeaver със следния SQL, използвайки визуализация на пространствени данни.

SELECT NEW ST_POINT("Long", "Lat"), "Country/Region", "Province/State", "Confirmed" FROM HANAML."df_confd";

Трябваше да променя проекцията на картата на EPSG:4326 за да получите тези точки на картата. И DBeaver ми показва останалите данни за запис, когато щракна върху която и да е точка.

[По-долу е старата екранна снимка от 2020-03-11, която също така демонстрира различната детайлност на напр. Използвани по това време данни в САЩ]

DBeaver пространствен преглед не е пълноценен инструмент за визуално геопространствено изследване. И все пак е достатъчно добър, за да видите засегнатите държави/региони (в зависимост от детайлността на изходните файлове).

Ако се интересувате да научите повече за hana_ml

... тогава определено бих препоръчал да проверите Ръководство за практически:Машинно обучение надолу към SAP HANA с Python от Андреас Форстър.

HANA ML е част от новата тема „Разширени анализи със SAP HANA“ за събития на CodeJam. За съжаление поради ситуацията с коронавируса се наложи да отменим първия, организиран от Якоб Фламан в Берн този месец. Друг е организиран от Ewelina Pękała на 27 май в Катовице:https://www.eventbrite.com/e/sap-codejam-katowice-registration-99016299417. Надяваме се, че дотогава ситуацията се нормализира и няма да е необходимо да отменяме и този.


  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. DBeaver EE 7.0 е последната версия с 32-битова поддръжка

  2. DBeaver 21.2

  3. Свеж DBeaver 21.1 за горещите летни дни

  4. DBeaver за финансовия сектор:ТОП-5 въпроса

  5. Работа с ODBC данни в DBeaver