{"id":17222,"date":"2025-01-29T15:12:36","date_gmt":"2025-01-29T13:12:36","guid":{"rendered":"https:\/\/spatialworld.fi\/?page_id=17222"},"modified":"2025-02-05T17:49:04","modified_gmt":"2025-02-05T15:49:04","slug":"17076-2-2-3-2","status":"publish","type":"page","link":"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/","title":{"rendered":"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=\"\">Geospatial Insights Unlocked: Excel Data Integration into Superset using FME.<\/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;17236&#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=\"ember546\" class=\"ember-view reader-text-block__heading-2\"><strong>Context and Case study<\/strong><\/h2>\n<p id=\"ember547\" class=\"ember-view reader-text-block__paragraph\">In today&#8217;s booming business intelligence landscape, Superset stands out as a versatile, web-based solution ideal for FME users.<\/p>\n<p id=\"ember548\" class=\"ember-view reader-text-block__paragraph\">Despite the prevalence of BI tools, Excel remains a go-to for its flexibility.<\/p>\n<p id=\"ember549\" class=\"ember-view reader-text-block__paragraph\">In this tutorial, we&#8217;ll show you how to seamlessly integrate Excel data into Superset, unlocking powerful geospatial insights with ease. Using a complex Excel file from Helsinki city as our example, we&#8217;ll focus on street winter care survey data, specifically regarding bicycles, to create an insightful dashboard.<\/p>\n<h2 id=\"ember550\" class=\"ember-view reader-text-block__heading-2\"><strong>Input Data<\/strong><\/h2>\n<p id=\"ember551\" class=\"ember-view reader-text-block__paragraph\"><a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"https:\/\/hri.fi\/data\/en_GB\/dataset\/helsingin-kaupungin-talvihoidon-kayttajatyytyvaisyyskyselyn-vastaukset\" target=\"_self\" data-test-app-aware-link=\"\">ANSWERS TO THE SURVEY REGARDING WINTER ROUTES MAINTENANCE OF THE CITY OF HELSINKI<\/a><\/p>\n<p id=\"ember552\" class=\"ember-view reader-text-block__paragraph\"><a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"https:\/\/hri.fi\/data\/en_GB\/dataset\/helsingin-pyoravaylat-2025\" target=\"_self\" data-test-app-aware-link=\"\">HELSINKI BICYCLE LANES 2025<\/a><\/p>\n<h2 id=\"ember553\" class=\"ember-view reader-text-block__heading-2\">Main steps<\/h2>\n<ol>\n<li><strong>Data Preparation<\/strong>: Read and clean\/adapt a complex Excel file<\/li>\n<li><strong>Geospatial Analysis<\/strong>: Enrich the data using geospatial analysis techniques<\/li>\n<li><strong>Superset Preparation<\/strong>: Prepare the data for integration into Superset<\/li>\n<li><strong>Visualization<\/strong>: Publish the data as charts in Superset, utilizing <a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"http:\/\/deck.gl\/\" target=\"_self\" data-test-app-aware-link=\"\">Deck.gl<\/a> charts for enhanced visualization.<\/li>\n<\/ol>\n<h3 id=\"ember555\" class=\"ember-view reader-text-block__heading-3\">Data Preparation: Playing with a complex Excel file<\/h3>\n[\/vc_column_text][image_with_animation image_url=&#8221;17249&#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--resize\" 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\"><em>Extract from study Excel<\/em><\/figcaption><\/figure>\n<\/div>\n<p id=\"ember557\" class=\"ember-view reader-text-block__paragraph\"><strong>Excel input<\/strong><\/p>\n<p id=\"ember558\" class=\"ember-view reader-text-block__paragraph\">The Excel input comprises data collected from a survey where respondents marked locations they traversed by car, bicycle, or on foot, along with feedback on winter care conditions encountered. Winter care is categorized into three aspects: slippage (stones on ice), snow plowing (pushed to the side), and snow removal. It can considered be good or bad.<\/p>\n<p id=\"ember559\" class=\"ember-view reader-text-block__paragraph\">Evidently generated from a web map survey tool export, the Excel file encompasses:<\/p>\n<ul>\n<li>Characteristics of surveyed individuals stored in one sheet.<\/li>\n<li>Reported points categorized by type of winter care, quality and transportation mode (e.g., snow_removal_bad_bicycle), spread across multiple sheets.<\/li>\n<\/ul>\n<p id=\"ember561\" class=\"ember-view reader-text-block__paragraph\">This setup presents several common challenges, including special characters (?\u00e4 and spaces) in sheet and column names, geometries represented as text, points dispersed across different sheets rather than having multiple attributes, incomplete data for optional fields, and non-standard attribute values.<\/p>\n<p id=\"ember562\" class=\"ember-view reader-text-block__paragraph\"><strong>FME data preparation<\/strong><\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17248&#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=\"ember564\" class=\"ember-view reader-text-block__paragraph\">FME is perfect for data prep because it:<\/p>\n<ul>\n<li>Merges data from various sources<\/li>\n<li>Checks attribute values for accuracy<\/li>\n<li>Renames attributes easily<\/li>\n<li>Filters data to focus on what&#8217;s needed<\/li>\n<li>Transforms geometries as required<\/li>\n<\/ul>\n<p id=\"ember566\" class=\"ember-view reader-text-block__paragraph\">For this task, we employed:<\/p>\n<ul>\n<li>AttributeCreator to generate attributes based on input sheet names<\/li>\n<li>Connections for merging points across sheets<\/li>\n<li>GeometryReplacer to interpret geometry fields accurately<\/li>\n<\/ul>\n[\/vc_column_text][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\"><em>State of data after preperation<\/em><\/figcaption><\/figure>\n<\/div>\n<h3 id=\"ember570\" class=\"ember-view reader-text-block__heading-3\">Enrich the data using geospatial analysis<\/h3>\n[\/vc_column_text][image_with_animation image_url=&#8221;17246&#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\"><em>FME steps for the Spatial Merge<\/em><\/figcaption><\/figure>\n<\/div>\n<p id=\"ember572\" class=\"ember-view reader-text-block__paragraph\">To enhance insights, we sought to associate survey points with corresponding pathways. Leveraging an open dataset from Helsinki City outlining planned bicycle routes for 2025, we executed the following steps:<\/p>\n<ol>\n<li>Read the shapefile containing pathway data.<\/li>\n<li>Determine the closest pathway to each survey point.<\/li>\n<li>Integrate point details with their respective pathways.<\/li>\n<\/ol>\n<p id=\"ember574\" class=\"ember-view reader-text-block__paragraph\">Executing this process with FME involves:<\/p>\n<ul>\n<li>Utilizing a reader or Creator + FeatureReader to specify the data source.<\/li>\n<li>Ensuring consistency in coordinate systems for both points and pathways using the Reprojector.<\/li>\n<li>Assigning unique identifiers to pathways, if absent, facilitated by the UniqueIdentifierGenerator transformer.<\/li>\n<li>Identifying the closest pathway to each point via the Neighbor Finder.<\/li>\n<li>Merging point attributes back into the pathway dataset using the FeatureMerger transformer.<\/li>\n<\/ul>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<ol>\n<li><strong>Add Dataset and Charts<\/strong>: Import your dataset (table) and create charts. Choose from various <a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"http:\/\/deck.gl\/\" target=\"_self\" data-test-app-aware-link=\"\">Deck.gl<\/a> chart options to suit your visualization needs.<\/li>\n<\/ol>\n<div class=\"reader-image-block reader-image-block--full-width\"><\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17245&#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\"><em>Result after merger<\/em><\/figcaption><\/figure>\n<\/div>\n<h3 id=\"ember577\" class=\"ember-view reader-text-block__heading-3\">Superset Preparation<\/h3>\n<p id=\"ember578\" class=\"ember-view reader-text-block__paragraph\">Superset accepts various formats, but we find PostgreSQL most convenient due to its compatibility, ability to handle large volumes, and support for multiple users.<\/p>\n<p id=\"ember579\" class=\"ember-view reader-text-block__paragraph\">For map charts, Superset&#8217;s capabilities are somewhat restricted. Most of them use <a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"http:\/\/deck.gl\/\" target=\"_self\" data-test-app-aware-link=\"\">Deck.gl<\/a> framework. There are three primary geometry representations:<\/p>\n<p id=\"ember580\" class=\"ember-view reader-text-block__paragraph\"><a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"https:\/\/deck.gl\/docs\/api-reference\/core\/layer\" target=\"_self\" data-test-app-aware-link=\"\">https:\/\/deck.gl\/docs\/api-reference\/core\/layer<\/a><\/p>\n<p id=\"ember581\" class=\"ember-view reader-text-block__paragraph\"><strong>Geometries <\/strong><\/p>\n<p id=\"ember582\" class=\"ember-view reader-text-block__paragraph\">There 3 kind of geometry representations, at the moment :<\/p>\n<ul>\n<li>Latitude and longitude attributes for points.<\/li>\n<li>A JSON-based format for lines, documented as &#8220;Paths&#8221;: [[X0,Y0][X1,Y1],&#8230;,[Xn,Yn]].<\/li>\n<li>GeoJSON, sometimes presented in specific objects.<\/li>\n<\/ul>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<blockquote>\n<pre class=\"reader-text-block__code-block\">{\"type\":\"Feature\",\"properties\":{\"name\":\"West Oakland (WOAK)\"},\"geometry\":{\"type\":\"Point\",\"coordinates\":[-122.294582, 37.804675]}}<\/pre>\n<\/blockquote>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<p id=\"ember584\" class=\"ember-view reader-text-block__paragraph\">In FME it translates into:<\/p>\n<ul>\n<li>Using CoordinateExtractor to extract latitude and longitude.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17244&#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>Employing CoordinateConcatenator and AttributeCreator to generate Path geometry.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17243&#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>Good luck with &#8220;Geojson&#8221;&#8230; we could not make it work, no valid example &#x1f937;&#x1f937;<\/li>\n<\/ul>\n<p id=\"ember590\" class=\"ember-view reader-text-block__paragraph\"><strong>Colors<\/strong><\/p>\n<p id=\"ember591\" class=\"ember-view reader-text-block__paragraph\">As for colors, basic map charts offer limited options for color maps and conditional values. To address this, there are three potential solutions:<\/p>\n<ul>\n<li>Utilize JavaScript in Superset, though this deviates from the no-code approach.<\/li>\n<\/ul>\n<ul>\n<li>Use FME to generate and store color values, then call them with a documented JavaScript snippet.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17242&#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>Just wait for a better update..<\/li>\n<\/ul>\n<p id=\"ember596\" class=\"ember-view reader-text-block__paragraph\">In FME, the steps to get the right color values in an attribute (let&#8217;s call it &#8220;color&#8221;) are the following:<\/p>\n<ol>\n<li>Using FeatureColorSetter to color data (options include random, rule-based, and ramps).<\/li>\n<li>Employing HTMLColorCalculator to extract colors in the correct format for the &#8220;color&#8221; attribute.<\/li>\n<\/ol>\n[\/vc_column_text][image_with_animation image_url=&#8221;17234&#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<p style=\"text-align: center;\"><em>Example of FeatureColorSetter settings<\/em><\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17233&#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;17232&#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\"><em>End result in FME viewer<\/em><\/figcaption><\/figure>\n<\/div>\n<p id=\"ember601\" class=\"ember-view reader-text-block__paragraph\"><strong>PostgreSQL<\/strong><\/p>\n<p id=\"ember602\" class=\"ember-view reader-text-block__paragraph\">For practical reasons, we opted to store our data in one of our server databases using PostgreSQL. FME&#8217;s PostgreSQL writers facilitate table generation and data manipulation seamlessly, all without needing SQL expertise. While more complex tasks may require dynamic SQL code generation, such intricacies are beyond the scope of this article.<\/p>\n<p id=\"ember603\" class=\"ember-view reader-text-block__paragraph\">In our setup, we created two tables:<\/p>\n<ol>\n<li><strong>snow_plowing_points<\/strong>: This table focuses on a specific aspect of maintenance analysis, namely snow plowing.<\/li>\n<li><strong>snow_bicycle_ways<\/strong>: Here, we store data related to cycling routes along with their maintenance attributes.<\/li>\n<\/ol>\n<p id=\"ember605\" class=\"ember-view reader-text-block__paragraph\">Setting up these tables is a straightforward process. With just a few clicks, you can add the PostgreSQL writer, configure your connection details, and define the attributes for your tables. Thanks to FME&#8217;s automation capabilities, this setup typically takes around 2 minutes to complete.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17238&#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--resize\">\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\">Example of table definition in FME<\/figcaption><\/figure>\n<\/div>\n<h3 id=\"ember607\" class=\"ember-view reader-text-block__heading-3\">Publish as charts in Superset with Deck.gl charts<\/h3>\n[\/vc_column_text][image_with_animation image_url=&#8221;17230&#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\"><em>Example of Dashboard<\/em><\/figcaption><\/figure>\n<\/div>\n<p id=\"ember609\" class=\"ember-view reader-text-block__paragraph\">Publishing charts in Superset with <a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"http:\/\/deck.gl\/\" target=\"_self\" data-test-app-aware-link=\"\">Deck.gl<\/a> enhances the visualization of our data. Below are the steps to create an interactive dashboard and explore our geospatial insights:<\/p>\n<ul>\n<li>Install Superset<\/li>\n<\/ul>\n<p id=\"ember611\" class=\"ember-view reader-text-block__paragraph\"><a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"https:\/\/www.linkedin.com\/pulse\/installing-apache-superset-docker-widows-os-lasmart-europe-zgkqf\/\" target=\"_self\" data-test-app-aware-link=\"\">https:\/\/www.linkedin.com\/pulse\/installing-apache-superset-docker-widows-os-lasmart-europe-zgkqf\/<\/a><\/p>\n<p id=\"ember612\" class=\"ember-view reader-text-block__paragraph\">On a windows environment, we advise you the docker-compose way, as shown in the above tutorial.<\/p>\n<ul>\n<li>Add your mapbox token into the <a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"http:\/\/config.py\/\" target=\"_self\" data-test-app-aware-link=\"\">config.py<\/a> file to be able to see the background map<\/li>\n<li>If you feel like playing with your own colors with path data, put to True this in the same config file : &#8220;ENABLE_JAVASCRIPT_CONTROLS&#8221;: True<\/li>\n<li>Add your database as a new dataset. For our setup, where PostgreSQL is hosted on our local machine, we specify its path using host.docker.internal in the SQLAlchemy URI.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17229&#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<ol>\n<li><strong>Add Dataset and Charts<\/strong>: Import your dataset (table) and create charts. Choose from various <a class=\"QHgNBisqsSQXGYlDXUUbuaaRFUNehsVjxBrEA \" href=\"http:\/\/deck.gl\/\" target=\"_self\" data-test-app-aware-link=\"\">Deck.gl<\/a> chart options to suit your visualization needs.<\/li>\n<\/ol>\n<div class=\"reader-image-block reader-image-block--full-width\"><\/div>\n[\/vc_column_text][image_with_animation image_url=&#8221;17228&#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;17227&#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><strong>Dashboard Creation<\/strong>: Complete your dashboard by adding classic charts to complement the geospatial insights.<\/li>\n<\/ul>\n[\/vc_column_text][image_with_animation image_url=&#8221;17230&#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\"><em>Dashboard Example<\/em><\/figcaption><\/figure>\n<\/div>\n<p id=\"ember622\" class=\"ember-view reader-text-block__paragraph\">Enjoy the interactivity of the dashboard. For instance, clicking on elements of the pivot table chart automatically filters other charts relying on the same dataset.<\/p>\n[\/vc_column_text][image_with_animation image_url=&#8221;17225&#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=\"ember624\" class=\"ember-view reader-text-block__heading-2\">Conclusion<\/h2>\n<p id=\"ember625\" class=\"ember-view reader-text-block__paragraph\">In summary, integrating Excel data into Superset with FME streamlines the path to valuable insights, especially in geospatial analysis.<\/p>\n<p id=\"ember626\" class=\"ember-view reader-text-block__paragraph\">By following the steps outlined in this tutorial, businesses can efficiently transform complex data into actionable visualizations. From cleaning and enriching data to creating interactive dashboards, this approach offers a user-friendly solution for extracting meaningful information.<\/p>\n<p id=\"ember627\" class=\"ember-view reader-text-block__paragraph\">As we embrace these tools, we unlock the potential for smarter decision-making and improved operational efficiency.<\/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-17222","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>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\/sv\/17076-2-2-3-2\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"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\/sv\/17076-2-2-3-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Spatialworld Oy\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-05T15:49:04+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data1\" content=\"12 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/\",\"url\":\"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/\",\"name\":\"Superset - Spatialworld Oy\",\"isPartOf\":{\"@id\":\"https:\/\/spatialworld.fi\/sv\/#website\"},\"datePublished\":\"2025-01-29T13:12:36+00:00\",\"dateModified\":\"2025-02-05T15:49:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/\"]]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/spatialworld.fi\/sv\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Superset\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/spatialworld.fi\/sv\/#website\",\"url\":\"https:\/\/spatialworld.fi\/sv\/\",\"name\":\"Spatialworld Oy\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/spatialworld.fi\/sv\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"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\/sv\/17076-2-2-3-2\/","og_locale":"sv_SE","og_type":"article","og_title":"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\/sv\/17076-2-2-3-2\/","og_site_name":"Spatialworld Oy","article_modified_time":"2025-02-05T15:49:04+00:00","twitter_misc":{"Ber\u00e4knad l\u00e4stid":"12 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/","url":"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/","name":"Superset - Spatialworld Oy","isPartOf":{"@id":"https:\/\/spatialworld.fi\/sv\/#website"},"datePublished":"2025-01-29T13:12:36+00:00","dateModified":"2025-02-05T15:49:04+00:00","breadcrumb":{"@id":"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/"]]}]},{"@type":"BreadcrumbList","@id":"https:\/\/spatialworld.fi\/sv\/17076-2-2-3-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/spatialworld.fi\/sv\/"},{"@type":"ListItem","position":2,"name":"Superset"}]},{"@type":"WebSite","@id":"https:\/\/spatialworld.fi\/sv\/#website","url":"https:\/\/spatialworld.fi\/sv\/","name":"Spatialworld Oy","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/spatialworld.fi\/sv\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"}]}},"_links":{"self":[{"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/pages\/17222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/comments?post=17222"}],"version-history":[{"count":11,"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/pages\/17222\/revisions"}],"predecessor-version":[{"id":17314,"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/pages\/17222\/revisions\/17314"}],"wp:attachment":[{"href":"https:\/\/spatialworld.fi\/sv\/wp-json\/wp\/v2\/media?parent=17222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}