{"id":17256,"date":"2025-01-30T13:05:30","date_gmt":"2025-01-30T11:05:30","guid":{"rendered":"https:\/\/spatialworld.fi\/?page_id=17256"},"modified":"2025-02-05T18:06:15","modified_gmt":"2025-02-05T16:06:15","slug":"17076-2-2-3-2-2","status":"publish","type":"page","link":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/","title":{"rendered":"Druid ja Superset"},"content":{"rendered":"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h1 class=\"reader-article-header__title\" dir=\"ltr\"><span data-scaffold-immersive-reader-title=\"\">V\u00e4yl\u00e4n saavutettavuuden analysointi FME:n, Druidin ja Supersetin avulla: Vaiheittainen opetusohjelma<\/span><\/h1>\n[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][image_with_animation image_url=&#8221;17280&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;75%&#8221; max_width_mobile=&#8221;default&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h2 id=\"ember2057\" class=\"ember-view reader-text-block__heading-2\">Konteksti<\/h2>\n<blockquote id=\"ember2058\" class=\"ember-view reader-text-block__blockquote\"><p>Kaupunkibussien saavutettavuuden ymm\u00e4rt\u00e4minen edellytt\u00e4\u00e4 sek\u00e4 paikka- ett\u00e4 ajallisen tiedon analysointia. T\u00e4m\u00e4 opetusohjelma n\u00e4ytt\u00e4\u00e4 kuinka hallita ja visualisoida t\u00e4llaisia \u200b\u200bmonimutkaisia \u200b\u200btietoja tehokkaasti Supersetin, FME:n ja Druidin avulla.<\/p><\/blockquote>\n<p id=\"ember2059\" class=\"ember-view reader-text-block__paragraph\">Kaupunkialueilla paikka-ajallinen dynamiikka, kuten ty\u00f6matka, asettaa monimutkaisia \u200b\u200bhaasteita, jotka vaativat vankat ty\u00f6kalut useiden muuttujien ja valtavien tietom\u00e4\u00e4rien tehokkaaseen analysointiin. Bussien saavutettavuuden ymm\u00e4rt\u00e4minen ei koske vain bussipys\u00e4kkien geospatiaalista jakautumista vaan my\u00f6s kulkuaikataulujen ajallisia n\u00e4k\u00f6kohtia. Aika on ratkaiseva tekij\u00e4, koska saavutettavuus vaihtelee p\u00e4iv\u00e4n, viikon ja eri alueilla, mik\u00e4 vaikuttaa siihen, kuinka hyvin eri v\u00e4est\u00f6ryhmi\u00e4 palvellaan.<\/p>\n<p id=\"ember2060\" class=\"ember-view reader-text-block__paragraph\">Nykyaikaisen liiketoimintatiedon alalla monimutkaisen geospatiaalisen ja ajallisen tiedon integrointi ja analysointi on edelleen merkitt\u00e4v\u00e4 haaste. Superset yhdess\u00e4 FME:n ja Druidin kanssa tarjoaa tehokkaan ratkaisun n\u00e4iden monimutkaisten asioiden hallintaan tehokkaasti. T\u00e4m\u00e4 yhdistelm\u00e4 mahdollistaa useiden monimutkaisen datan l\u00e4hteiden integroinnin mittakaavassa s\u00e4ilytt\u00e4en samalla alhaisen viiveen, minimaaliset koodausvaatimukset ja vahvat visualisointiominaisuudet.<\/p>\n<h2 id=\"ember2061\" class=\"ember-view reader-text-block__heading-2\">Maali<\/h2>\n<p id=\"ember2062\" class=\"ember-view reader-text-block__paragraph\">Pyrimme luomaan datapisteen jokaiselle bussin saapumiselle jokaiselle pys\u00e4kille seuraavan kolmen kuukauden aikana, mik\u00e4 johtaa useisiin merkint\u00f6ihin per pys\u00e4kki, jotta koko aikataulu saadaan talteen FME:n avulla. Sitten leikkaamme n\u00e4m\u00e4 tiedot l\u00e4pi saadaksemme oivalluksia todella nopeasti Druidilla Supersetin kautta.<\/p>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h2 id=\"ember2063\" class=\"ember-view reader-text-block__heading-2\">Sy\u00f6tt\u00f6tiedot<\/h2>\n<p id=\"ember2064\" class=\"ember-view reader-text-block__paragraph\"><strong>GTFS-tiedostot: T\u00e4t\u00e4 m\u00e4\u00e4rityst\u00e4 k\u00e4ytet\u00e4\u00e4n suunniteltujen kuljetusten vaihtamiseen. sit\u00e4 k\u00e4ytet\u00e4\u00e4n monissa maissa.<\/strong><\/p>\n<p id=\"ember2065\" class=\"ember-view reader-text-block__paragraph\">Helsingin tiedot ovat saatavilla osoitteessa\u00a0<a class=\"qHTFgUmLyluvQraIwmWJYQgdGztEheAxLmaY \" href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=fi&amp;hl=fr&amp;client=webapp&amp;u=https:\/\/www.hsl.fi\/en\/hsl\/open-data%23public-transport-network-and-timetables-gtfs\" target=\"_self\" data-test-app-aware-link=\"\">https:\/\/www.hsl.fi\/fi\/hsl\/open-data#julkinen-liikenne-verkko-ja-aikataulut-gtfs<\/a>\u00a0.<\/p>\n<p id=\"ember2066\" class=\"ember-view reader-text-block__paragraph\">K\u00e4ytimme tutkimuksessamme seuraavia tiedostoja:<\/p>\n<ul>\n<li>stops.txt: Sis\u00e4lt\u00e4\u00e4 tiedot bussipys\u00e4keist\u00e4.<\/li>\n<li>stop_times.txt: Tarjoaa aikataulutiedot.<\/li>\n<li>trips.txt: M\u00e4\u00e4ritt\u00e4\u00e4 matkat tietyill\u00e4 reiteill\u00e4.<\/li>\n<li>routes.txt: Kuvaa reitit.<\/li>\n<li>calendar.txt: M\u00e4\u00e4ritt\u00e4\u00e4 toimintap\u00e4iv\u00e4t.<\/li>\n<li>calendar_dates.txt: Luettelo aikataulun poikkeuksista.<\/li>\n<li>shapes.txt: Kartoittaa reittien fyysiset polut.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17279&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h2 id=\"ember2069\" class=\"ember-view reader-text-block__heading-2\">P\u00e4\u00e4vaiheet<\/h2>\n<ol>\n<li>Tietojen valmistelu: FME Lue ja puhdista\/mukauta GTFS-tiedostoja.<\/li>\n<li>Druidin integrointi: Integroi Druidiin.<\/li>\n<li>Visualisointi: Julkaise tiedot kaavioina Supersetiss\u00e4.<\/li>\n<\/ol>\n<h2 id=\"ember2071\" class=\"ember-view reader-text-block__heading-2\">Tietojen valmistelu FME:n kanssa<\/h2>\n<blockquote id=\"ember2072\" class=\"ember-view reader-text-block__blockquote\"><p>Pyrimme luomaan datapisteen jokaiselle bussin saapumiselle jokaiselle pys\u00e4kille seuraavan kolmen kuukauden aikana, mik\u00e4 johtaa useisiin merkint\u00f6ihin per pys\u00e4kki koko aikataulun tallentamiseksi.<\/p><\/blockquote>\n<p id=\"ember2073\" class=\"ember-view reader-text-block__paragraph\">Mukana on useita liitoksia, jotka mahdollistavat useimpien FME:n &#8220;sulautuvien&#8221; muuntajien l\u00e4pik\u00e4ymisen esittelyn vuoksi. Toinen p\u00e4\u00e4asiallinen huolenaihe tulee aikaan liittyvist\u00e4 ominaisuuksista.<\/p>\n<h3 id=\"ember2074\" class=\"ember-view reader-text-block__heading-3\">Kalenterista ja poikkeuksista p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4-aikaan<\/h3>\n<p id=\"ember2075\" class=\"ember-view reader-text-block__paragraph\">Kalenteritaulukossa jokaisella palvelulla on alkamisp\u00e4iv\u00e4, lopetusp\u00e4iv\u00e4 ja toimintap\u00e4iv\u00e4t, jotka muistuttavat tyypillist\u00e4 bussipys\u00e4kkiaikataulua, mutta eiv\u00e4t ISO-p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4muodossa. Lis\u00e4ksi \u201dKalenterip\u00e4iv\u00e4t\u201d m\u00e4\u00e4ritt\u00e4\u00e4 poikkeusp\u00e4iv\u00e4t, mik\u00e4 lis\u00e4\u00e4 monimutkaisuutta.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17278&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"reader-image-block reader-image-block--full-width\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\">\n<p id=\"ember2077\" class=\"ember-view reader-text-block__paragraph\">T\u00e4ss\u00e4 ovat k\u00e4ytt\u00e4m\u00e4mme vaiheet:<\/p>\n<ul>\n<li><strong>Lue kalenteritaulukko FME:st\u00e4<\/strong><\/li>\n<\/ul>\n<\/figcaption><\/figure>\n<\/div>\n<blockquote>\n<pre class=\"reader-text-block__code-block\">service_id | monday | tuesday | wednesday | thursday | friday | saturday | sunday | start_date | end_date\r\n1001       | 0      | 0       | 1         | 0        | 0      | 0        | 0      | 20240522   | 20240602<\/pre>\n<\/blockquote>\n<ul>\n<li><strong><span class=\"VIpgJd-yAWNEb-VIpgJd-fmcmS-sn54Q\">Yhdist\u00e4 t\u00e4m\u00e4 todellisiin p\u00e4iv\u00e4m\u00e4\u00e4riin k\u00e4ytt\u00e4m\u00e4ll\u00e4 PythonCallerin Datetime-kirjastoa<\/span><\/strong><\/li>\n<\/ul>\n<blockquote>\n<pre class=\"reader-text-block__code-block\">def get_specific_day_dates(start_date, end_date, day_of_week):\r\n\r\n    start_date = datetime.strptime(start_date, '%Y%m%d')\r\n    end_date = datetime.strptime(end_date, '%Y%m%d')\r\n    current_date = start_date\r\n    dates_list = []\r\n\r\n    # Convert day_of_week from 1-7 to 0-6 (to match Python's weekday where Monday is 0)\r\n    day_of_week = (day_of_week - 1) % 7\r\n\r\n    while current_date &lt;= end_date:\r\n        if current_date.weekday() == day_of_week:\r\n            dates_list.append(current_date.strftime('%Y%m%d'))\r\n        current_date += timedelta(days=1)\r\n\r\n    return dates_list<\/pre>\n<\/blockquote>\n<ul>\n<li><strong>Lue ja yhdist\u00e4 palvelupoikkeukset<\/strong>\u00a0s\u00e4ilytt\u00e4\u00e4ksesi vain p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4t, joita ei ole yhdistetty, koska \u201dcalendar_dates\u201d -rakenne on hyvin yksinkertainen. FeatureMerger on tarpeeksi hyv\u00e4 t\u00e4h\u00e4n. Tiedot eiv\u00e4t ole t\u00e4ydellisi\u00e4 ja jotkut poikkeusp\u00e4iv\u00e4t ovat ep\u00e4johdonmukaisia, mutta se riitt\u00e4\u00e4 tarkoitukseemme.<\/li>\n<\/ul>\n<blockquote>\n<pre class=\"reader-text-block__code-block\">service_id\tdate\texception_type\r\n\r\n1001_20240522_20240602_Pe\t20240531\t2<\/pre>\n<\/blockquote>\n[\/vc_column_text][image_with_animation image_url=&#8221;17277&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"reader-image-block reader-image-block--full-width\" style=\"text-align: center;\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\">\n<div class=\"reader-image-block reader-image-block--full-width\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\"><em>yhdist\u00e4minen palvelutunnus-parametriin suodattaaksesi poikkeuksen p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4t<\/em><\/figcaption><\/figure>\n<\/div>\n<\/figcaption><\/figure>\n<\/div>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<div class=\"wpb_text_column wpb_content_element \">\n<div class=\"wpb_wrapper\">\n<h3 id=\"ember2082\" class=\"ember-view reader-text-block__heading-3\">Palvelup\u00e4iv\u00e4m\u00e4\u00e4rist\u00e4 pys\u00e4hdyspisteisiin liittymiskaskadin kautta<\/h3>\n<\/div>\n<\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17276&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<p id=\"ember2084\" class=\"ember-view reader-text-block__paragraph\">Meill\u00e4 on nyt 1 p\u00e4iv\u00e4 jokaista palvelua kohden. Haluamme yhdist\u00e4\u00e4 n\u00e4m\u00e4 tiedot p\u00e4iv\u00e4n kaikille matkoille ja sitten jokaisen matkan kaikille pys\u00e4hdyspaikoille.<\/p>\n<ul>\n<li>Liity\u00a0<strong>matkoilla<\/strong>\u00a0FeatureJoinerilla, nopeammin ja l\u00e4hemp\u00e4n\u00e4 klassista SQL-liitosta, joka perustuu service_id-avaimeen. Kuten alla n\u00e4et, tiedot eiv\u00e4t ole t\u00e4ydellisi\u00e4. Se ei ole meille merkityksellinen (noin 1\u00a0% ja olemme vasta rakentamassa demoa), mutta se osoittaa, kuinka hyv\u00e4 FME-putkisto on hyv\u00e4 parantaa tietojen laatua putkilinjaa rakennettaessa. Puhtaalla SQL:ll\u00e4 olisimme saattanut unohtaa n\u00e4m\u00e4 vahvistuspyynn\u00f6t.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17275&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<ul>\n<li>T\u00e4ydent\u00e4v\u00e4t liitokset Inlinequerierin kautta. T\u00e4m\u00e4 muuntaja on todella k\u00e4tev\u00e4, koska sen avulla voidaan luoda lennossa tilap\u00e4inen SQLite-tietokanta nykyisten tietojen perusteella ja suorittaa SQL-kyselyj\u00e4. Sivuhuomautuksena, monissa tapauksissa, kuten n\u00e4emme my\u00f6hemmin, Duckdb olisi paljon nopeampi. Toivomme, ett\u00e4 Safe toteuttaa sen mahdollisimman pian &#x1f609;.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17274&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<blockquote>\n<pre class=\"reader-text-block__code-block\">SELECT \r\n    r.route_id,\r\n    r.route_short_name,\r\n    r.route_long_name,\r\n    t.trip_id,\r\n    t.service_id,\r\n    t.trip_date,\r\n    t.shape_id,\r\n    st.stop_sequence,\r\n    st.arrival_time,\r\n    st.departure_time,\r\n    s.stop_id,\r\n    s.stop_name,\r\n    s.stop_lat,\r\n    s.stop_lon\r\nFROM \r\n    trips t\r\nJOIN \r\n    routes r ON t.route_id = r.route_id\r\nJOIN \r\n    stop_times st ON t.trip_id = st.trip_id\r\nJOIN \r\n    stops s ON st.stop_id = s.stop_id<\/pre>\n<\/blockquote>\n<p id=\"ember2089\" class=\"ember-view reader-text-block__paragraph\"><em>Sivuhuomautuksena emme ottaneet huomioon gtfs-muodossa kuvattuja ylim\u00e4\u00e4r\u00e4isi\u00e4 palvelutunteja. Esimerkiksi kirjoitetaan matka, joka alkaa perjantain palvelusta mutta p\u00e4\u00e4ttyy lauantaina klo 1.00<\/em><\/p>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h3 id=\"ember2090\" class=\"ember-view reader-text-block__heading-3\">Kirjoita Parketille<\/h3>\n<p id=\"ember2091\" class=\"ember-view reader-text-block__paragraph\">T\u00e4m\u00e4 osa on yksinkertainen, tarkista vain tyypit. Parketti on nopea, kompakti ja Druidin tukema, siksi se valittiin. Meill\u00e4 on t\u00e4\u00e4ll\u00e4 l\u00e4hes 70 miljoonaa pistett\u00e4. P\u00e4\u00e4timme s\u00e4ilytt\u00e4\u00e4 mahdollisimman monta attribuuttia tehd\u00e4ksemme analyysist\u00e4 joustavamman, mutta se tulee my\u00f6hemmin kalliiksi. Toisaalta mit\u00e4\u00e4n muuta aineistoa ei liitetty, mutta on selv\u00e4\u00e4, ett\u00e4 jokin paikallista aluetta tai paikallista v\u00e4est\u00f6tiheytt\u00e4 koskeva kentt\u00e4 auttaisi syvemp\u00e4\u00e4n analyysiin. FME:n vahvuus loistaisi viel\u00e4kin enemm\u00e4n.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17273&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h2 id=\"ember2093\" class=\"ember-view reader-text-block__heading-2\">Druidi-integraatio<\/h2>\n<p id=\"ember2094\" class=\"ember-view reader-text-block__paragraph\">Druidi reaaliaikaisessa OLAP-j\u00e4rjestelm\u00e4ss\u00e4, joka pystyy k\u00e4sittelem\u00e4\u00e4n valtavan m\u00e4\u00e4r\u00e4n kyselyj\u00e4 ja tietoja. Valitsimme sen huvin vuoksi, mutta my\u00f6s siksi, ett\u00e4 se sopii paremmin kuin PostgreSQL sellaiseen aikaleikkausanalyysiin, jolla haluamme pelata suuressa mittakaavassa. Lis\u00e4tietoja:\u00a0<a class=\"qHTFgUmLyluvQraIwmWJYQgdGztEheAxLmaY \" href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=fi&amp;hl=fr&amp;client=webapp&amp;u=https:\/\/druid.apache.org\/\" target=\"_self\" data-test-app-aware-link=\"\">https:\/\/druid.apache.org\/<\/a><\/p>\n<h3 id=\"ember2095\" class=\"ember-view reader-text-block__heading-3\">Asennus<\/h3>\n<p id=\"ember2096\" class=\"ember-view reader-text-block__paragraph\">Asensimme sen docker-compen kautta. Voit ottaa meihin yhteytt\u00e4, jos haluat tiedoston, se on paljon suoraviivaisempaa kuin odotimme.<\/p>\n<p id=\"ember2097\" class=\"ember-view reader-text-block__paragraph\">Pieni muutos vaniljaasennukseen : Lis\u00e4\u00e4 parketin jatke.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17272&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3 id=\"ember2099\" class=\"ember-view reader-text-block__heading-3\">Tietojen lataus<\/h3>\n<p id=\"ember2100\" class=\"ember-view reader-text-block__paragraph\">Asennuksen j\u00e4lkeen saat mukavan k\u00e4ytt\u00f6liittym\u00e4n, jossa voit ladata tietoja er\u00e4n\u00e4 (tai streamina). Voit my\u00f6s k\u00e4ytt\u00e4\u00e4 API:ta tietojen lataamiseen tai kyselyjen k\u00e4sittelyyn, mik\u00e4 on mukavaa tuotannossa, jos yhdist\u00e4t sen FME Flow&#8217;n tai mink\u00e4 tahansa automaatiop\u00e4\u00e4llik\u00f6n\/aikataulun kanssa.<\/p>\n<p id=\"ember2101\" class=\"ember-view reader-text-block__paragraph\">Joitakin temppuja tarvittiin viel\u00e4, jos olet meid\u00e4n tavoin aloittelija t\u00e4m\u00e4n tietokannan kanssa:<\/p>\n<ol>\n<li>Kun tietoja ladataan er\u00e4tilassa, jos haluat valita paikallisen kansion, sen on oltava useissa s\u00e4il\u00f6iss\u00e4 samassa alikansiossa. Meid\u00e4n tapauksessamme dockerin kanssa latasimme parkettitiedoston historia-, koordinaattori- ja middlemanager-s\u00e4ili\u00f6ihin. Jos n\u00e4in ei ole, virheilmoitukset eiv\u00e4t ole kovin suuria<\/li>\n<li>Sinun on m\u00e4\u00e4ritett\u00e4v\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4-aika-kentt\u00e4. Valitettavasti meill\u00e4 oli aikakent\u00e4t ja p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4kentt\u00e4 (trip_date). Koska niiden yhdist\u00e4minen vaati joko parempaa druidin tuntemusta tai yhdistetty\u00e4 date_timestamp -tunnusta, valitsimme toisen vaihtoehdon. Latasimme tiedot duckdb:hen ja loimme uuden parkettitiedoston, jossa oli ketjutettu kentt\u00e4 ISO:n mukaan, koska FME oli hieman hidas t\u00e4ss\u00e4 teht\u00e4v\u00e4ss\u00e4\u2026<\/li>\n<li>Varo sen automaattista skeeman tunnistusta, sill\u00e4 se ei ole yht\u00e4 hyv\u00e4 kuin FME:n.<\/li>\n<li>Imetysaika on v\u00e4h\u00e4n pitk\u00e4. Sen pit\u00e4isi johtua siit\u00e4, ett\u00e4 meill\u00e4 ei ole tiet\u00e4myst\u00e4mme kokoonpanosta ja indeksien luomisesta. OLAPin nopea tietojen k\u00e4ytt\u00f6 edellytt\u00e4\u00e4 tallennustilan optimointia monin tavoin.<\/li>\n<\/ol>\n<h3 id=\"ember2103\" class=\"ember-view reader-text-block__heading-3\">Tietojen kartoitus ja ensimm\u00e4iset kyselyt<\/h3>\n<p id=\"ember2104\" class=\"ember-view reader-text-block__paragraph\">Tarkistaaksemme, ett\u00e4 data oli ladattu hyvin, pelasimme druidin sis\u00e4isell\u00e4 SQL-kyselyll\u00e4 ja sen kokeellisella \u201ddata exploration\u201d -moodilla. Ne olivat todella k\u00e4tevi\u00e4, kun Superset-kyselyt saivat \u201dodottamattomia\u201d tuloksia.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17271&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"wpb_text_column wpb_content_element \">\n<div class=\"wpb_wrapper\">\n<p style=\"text-align: center;\"><em>Druidi inline SQL-editori syntaksiapuohjelmalla<\/em><\/p>\n<\/div>\n<\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17281&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"wpb_text_column wpb_content_element \">\n<div class=\"wpb_wrapper\">\n<p style=\"text-align: center;\"><em>Tutkimustila, laske(*) p\u00e4iv\u00e4kohtaisesti noin 21. kes\u00e4kuuta (paras tapahtuma Suomessa)<\/em><\/p>\n<\/div>\n<\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17270&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"reader-image-block reader-image-block--full-width\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\">\n<div class=\"reader-image-block reader-image-block--full-width\" style=\"text-align: center;\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\">Pisteiden m\u00e4\u00e4r\u00e4 rivi\u00e4 kohden, suodatettu viikoittain, huomautus lauantaina ja sunnuntaina<\/figcaption><\/figure>\n<\/div>\n<\/figcaption><\/figure>\n<\/div>\n<hr class=\"reader-divider-block__horizontal-rule\" \/>\n<h2 id=\"ember2109\" class=\"ember-view reader-text-block__heading-2\">Visualisointi: Aikasuuntautuneen kojelaudan luominen Supersetiss\u00e4<\/h2>\n<p id=\"ember2110\" class=\"ember-view reader-text-block__paragraph\">Tavoitteena on luoda dashboard, jonka avulla voi tutkia aineistoa ja saada k\u00e4sityksen siit\u00e4, miten joukkoliikenne kehittyy ajan ja tilan perusteella p\u00e4\u00e4kaupunkiseudulla.<\/p>\n<h3 id=\"ember2111\" class=\"ember-view reader-text-block__heading-3\">Asennus<\/h3>\n<p id=\"ember2112\" class=\"ember-view reader-text-block__paragraph\">T\u00e4ss\u00e4 taas k\u00e4ytimme docker-composea. Olisimme voineet jopa sulautua druidiin, mutta sit\u00e4 ei todellakaan tarvittu. Voit katsoa t\u00e4m\u00e4n artikkelin l\u00e4pi viitteen\u00e4:<\/p>\n<p id=\"ember2113\" class=\"ember-view reader-text-block__paragraph\"><a class=\"qHTFgUmLyluvQraIwmWJYQgdGztEheAxLmaY \" href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=fi&amp;hl=fr&amp;client=webapp&amp;u=https:\/\/www.linkedin.com\/pulse\/geospatial-insights-unlocked-excel-data-integration-superset-za7mf\/\" target=\"_self\" data-test-app-aware-link=\"\">https:\/\/www.linkedin.com\/pulse\/geospatial-insights-unlocked-excel-data-integration-superset-za7mf\/<\/a><\/p>\n<h3 id=\"ember2114\" class=\"ember-view reader-text-block__heading-3\">Yhdist\u00e4 druiditietokantaan<\/h3>\n<ul>\n<li>Siirry kohtaan Asetukset \/ Tietokanta<\/li>\n<\/ul>\n<p id=\"ember2116\" class=\"ember-view reader-text-block__paragraph\">&#8211; Lis\u00e4\u00e4 Druid-yhteys, jos k\u00e4yt\u00e4t sit\u00e4 kuten me dockerin kanssa, sen pit\u00e4isi olla jotain\u00a0<em>druid:\/\/host.docker.internal:8888\/druid\/v2\/sql\/<\/em><\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17269&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<ul>\n<li>Luo tietojoukkosi osoittamalla tietokantaan.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17268&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3 id=\"ember2121\" class=\"ember-view reader-text-block__heading-3\">Karttakaavion asettaminen<\/h3>\n<p id=\"ember2122\" class=\"ember-view reader-text-block__paragraph\">Haluamme n\u00e4hd\u00e4 yhden pisteen jokaisesta bussipys\u00e4kist\u00e4, mutta emme kaikkia aikaleimoja. T\u00e4t\u00e4 varten valitsemme\u00a0<a class=\"qHTFgUmLyluvQraIwmWJYQgdGztEheAxLmaY \" href=\"https:\/\/translate.google.com\/website?sl=en&amp;tl=fi&amp;hl=fr&amp;client=webapp&amp;u=http:\/\/deck.gl\/\" target=\"_self\" data-test-app-aware-link=\"\">deck.gl-<\/a>\u00a0hajakuvaajan, konfiguroimme lat-pitk\u00e4t kent\u00e4t ja asetamme v\u00e4rin \u201drivill\u00e4\u201d.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17267&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][image_with_animation image_url=&#8221;17266&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3 id=\"ember2127\" class=\"ember-view reader-text-block__heading-3\">Aikakaavion asettaminen<\/h3>\n<p id=\"ember2128\" class=\"ember-view reader-text-block__paragraph\">Haluamme n\u00e4hd\u00e4, milt\u00e4 verkko n\u00e4ytt\u00e4\u00e4 kellonajasta riippuen.<\/p>\n<ul>\n<li>Lis\u00e4\u00e4 &#8220;laskettu sarake&#8221; Supersetiin.<\/li>\n<\/ul>\n<p id=\"ember2130\" class=\"ember-view reader-text-block__paragraph\">Olisimme voineet p\u00e4ivitt\u00e4\u00e4 tietol\u00e4hteen druidissa. mutta katsotaanpa, miten lis\u00e4t\u00e4\u00e4n sarake, joka lasketaan dynaamisesti superjoustavuuden osoittamiseksi.<\/p>\n<p id=\"ember2131\" class=\"ember-view reader-text-block__paragraph\">Mene vain tietojoukkoon, napsauta Muokkaa ja kirjoita sarakkeen nimi ja sql-valinta antaaksesi halutun arvon.<\/p>\n<p id=\"ember2132\" class=\"ember-view reader-text-block__paragraph\">T\u00e4ss\u00e4 SQL on yksinkertainen:<\/p>\n<blockquote>\n<pre class=\"reader-text-block__code-block\"> EXTRACT(HOUR FROM \"__time\")<\/pre>\n<\/blockquote>\n[\/vc_column_text][image_with_animation image_url=&#8221;17265&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<ul>\n<li>Lis\u00e4\u00e4 taulukkokaavio<\/li>\n<\/ul>\n<p id=\"ember2135\" class=\"ember-view reader-text-block__paragraph\">Siell\u00e4 sinun tarvitsee vain valita kentt\u00e4si, valita Count(*) mittariksi ja se vain toimii<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17264&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][image_with_animation image_url=&#8221;17282&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3 id=\"ember2138\" class=\"ember-view reader-text-block__heading-3\">Luo hallintapaneeli<\/h3>\n<p id=\"ember2139\" class=\"ember-view reader-text-block__paragraph\">Yksi supersetin vahvimmista kohdista on kojelaudan interaktiivisuus. Kun valitset elementin yhdest\u00e4 kaaviosta, kaikki muut p\u00e4ivitet\u00e4\u00e4n vastaamaan muutosta, jolloin samat tiedot voidaan n\u00e4hd\u00e4 eri n\u00e4k\u00f6kulmista.<\/p>\n<ul>\n<li>Lis\u00e4\u00e4 kaavioita<\/li>\n<\/ul>\n<p id=\"ember2141\" class=\"ember-view reader-text-block__paragraph\">Kun luot kojelautaa, kaikki k\u00e4ytett\u00e4viss\u00e4 olevat kaaviot luetellaan, ja ne voidaan lis\u00e4t\u00e4 vet\u00e4m\u00e4ll\u00e4 ja pudottamalla.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17263&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<ul>\n<li>J\u00e4rjest\u00e4 ne<\/li>\n<\/ul>\n<p id=\"ember2144\" class=\"ember-view reader-text-block__paragraph\">Kun luot kojelautaa, voit mukauttaa kunkin kaavion sijaintikokoa ja lis\u00e4t\u00e4 teksti\u00e4 ja jakajia kuten miss\u00e4 tahansa nykyaikaisessa verkkosivun rakennusohjelmassa. Voit jopa muokata CSS:\u00e4\u00e4, jos olet enemm\u00e4n k\u00e4ytt\u00f6liittym\u00e4st\u00e4 kiinnostunut.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17262&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"wpb_text_column wpb_content_element \">\n<div class=\"wpb_wrapper\">\n<h2 id=\"ember2146\" class=\"ember-view reader-text-block__heading-2\"><span class=\"VIpgJd-yAWNEb-VIpgJd-fmcmS-sn54Q\">Leiki tiedoilla!<\/span><\/h2>\n<\/div>\n<\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17261&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][image_with_animation image_url=&#8221;17260&#8243; image_size=&#8221;medium_large&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;center&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<div class=\"reader-image-block reader-image-block--full-width\" style=\"text-align: center;\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\">\n<div class=\"reader-image-block reader-image-block--full-width\">\n<figure class=\"reader-image-block__figure\"><figcaption class=\"reader-image-block__figure-image-caption display-block full-width text-body-small-open t-sans text-align-center t-black--light\"><em>Linja 40 sunnuntaisin (UTC-aika)<\/em><\/figcaption><\/figure>\n<\/div>\n<\/figcaption><\/figure>\n<\/div>\n<h2 id=\"ember2149\" class=\"ember-view reader-text-block__heading-2\">Johtop\u00e4\u00e4t\u00f6s<\/h2>\n<p id=\"ember2150\" class=\"ember-view reader-text-block__paragraph\">Supersetin, FME:n ja Druidin integrointi tarjoaa tehokkaan ratkaisun monimutkaisten paikka-aikatietojen analysointiin kaupunkiliikennej\u00e4rjestelmiss\u00e4. T\u00e4m\u00e4 arkkitehtuuri k\u00e4sittelee ja visualisoi tehokkaasti laajoja tietojoukkoja ja tarjoaa arvokasta tietoa julkisen liikenteen saavutettavuudesta.<\/p>\n<h3 id=\"ember2151\" class=\"ember-view reader-text-block__heading-3\">T\u00e4m\u00e4n arkkitehtuurin edut<\/h3>\n<p id=\"ember2152\" class=\"ember-view reader-text-block__paragraph\"><strong>Skaalautuvuus ja tehokkuus<\/strong>\u00a0: Arkkitehtuuri k\u00e4sittelee suuria tietojoukkoja pienell\u00e4 viiveell\u00e4, mik\u00e4 on ratkaisevan t\u00e4rke\u00e4\u00e4 kaupunkisuunnittelijoille ja liikenneviranomaisille, jotka tarvitsevat nopeaa ja luotettavaa data-analyysi\u00e4.<\/p>\n<p id=\"ember2153\" class=\"ember-view reader-text-block__paragraph\"><strong>Joustavuus ja minimaalinen koodaus<\/strong>\u00a0: Visuaalisten ty\u00f6kalujen ja minimaalisten koodausvaatimusten ansiosta t\u00e4m\u00e4 kokoonpano on k\u00e4ytt\u00e4jien, joilla on vaihteleva tekninen tausta, k\u00e4ytett\u00e4viss\u00e4, mik\u00e4 mahdollistaa nopean mukauttamisen erilaisiin tietokokonaisuuksiin ja analyyttisiin tarpeisiin.<\/p>\n<p id=\"ember2154\" class=\"ember-view reader-text-block__paragraph\"><strong>Kattava visualisointi<\/strong>\u00a0: Supersetin interaktiiviset kojelautat tarjoavat dynaamisia n\u00e4kemyksi\u00e4, joiden avulla k\u00e4ytt\u00e4j\u00e4t voivat tunnistaa malleja ja trendej\u00e4 julkisen liikenteen tiedoista, mik\u00e4 helpottaa tietoisen p\u00e4\u00e4t\u00f6ksentekoa.<\/p>\n<p id=\"ember2155\" class=\"ember-view reader-text-block__paragraph\"><strong>Monipuoliset k\u00e4ytt\u00f6tapaukset<\/strong>\u00a0: Kaupunkiliikenteen lis\u00e4ksi t\u00e4t\u00e4 arkkitehtuuria voidaan soveltaa \u00e4lykk\u00e4isiin kaupunkeihin, v\u00e4hitt\u00e4iskauppaan, logistiikkaan, terveydenhuoltoon ja ymp\u00e4rist\u00f6n seurantaan, mik\u00e4 tarjoaa arvokkaita n\u00e4kemyksi\u00e4 eri aloilta.<\/p>\n<p id=\"ember2156\" class=\"ember-view reader-text-block__paragraph\">Yhteenvetona voidaan todeta, ett\u00e4 Supersetin, FME:n ja Druidin yhdistelm\u00e4 tarjoaa skaalautuvan, joustavan ja tehokkaan arkkitehtuurin monimutkaisten tila-ajallisten tietojen hallintaan ja analysointiin.<\/p>\n[\/vc_column_text][\/vc_column][\/vc_row]","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221;&#8230;<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-17256","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Druid ja Superset - Spatialworld Oy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/\" \/>\n<meta property=\"og:locale\" content=\"fi_FI\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Druid ja Superset - Spatialworld Oy\" \/>\n<meta property=\"og:description\" content=\"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221;...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Spatialworld Oy\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-05T16:06:15+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Arvioitu lukuaika\" \/>\n\t<meta name=\"twitter:data1\" content=\"21 minuuttia\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/\",\"url\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/\",\"name\":\"Druid ja Superset - Spatialworld Oy\",\"isPartOf\":{\"@id\":\"https:\/\/spatialworld.fi\/fi\/#website\"},\"datePublished\":\"2025-01-30T11:05:30+00:00\",\"dateModified\":\"2025-02-05T16:06:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/#breadcrumb\"},\"inLanguage\":\"fi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/\"]]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/spatialworld.fi\/fi\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Druid ja Superset\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/spatialworld.fi\/fi\/#website\",\"url\":\"https:\/\/spatialworld.fi\/fi\/\",\"name\":\"Spatialworld Oy\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/spatialworld.fi\/fi\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fi\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Druid ja Superset - Spatialworld Oy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/","og_locale":"fi_FI","og_type":"article","og_title":"Druid ja Superset - Spatialworld Oy","og_description":"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221;...","og_url":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/","og_site_name":"Spatialworld Oy","article_modified_time":"2025-02-05T16:06:15+00:00","twitter_misc":{"Arvioitu lukuaika":"21 minuuttia"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/","url":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/","name":"Druid ja Superset - Spatialworld Oy","isPartOf":{"@id":"https:\/\/spatialworld.fi\/fi\/#website"},"datePublished":"2025-01-30T11:05:30+00:00","dateModified":"2025-02-05T16:06:15+00:00","breadcrumb":{"@id":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/#breadcrumb"},"inLanguage":"fi","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/"]]}]},{"@type":"BreadcrumbList","@id":"https:\/\/spatialworld.fi\/fi\/17076-2-2-3-2-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/spatialworld.fi\/fi\/"},{"@type":"ListItem","position":2,"name":"Druid ja Superset"}]},{"@type":"WebSite","@id":"https:\/\/spatialworld.fi\/fi\/#website","url":"https:\/\/spatialworld.fi\/fi\/","name":"Spatialworld Oy","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/spatialworld.fi\/fi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fi"}]}},"_links":{"self":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages\/17256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/comments?post=17256"}],"version-history":[{"count":9,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages\/17256\/revisions"}],"predecessor-version":[{"id":17320,"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/pages\/17256\/revisions\/17320"}],"wp:attachment":[{"href":"https:\/\/spatialworld.fi\/fi\/wp-json\/wp\/v2\/media?parent=17256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}