Visualizzare i dati

Azure Synapse è un servizio di analisi integrato che accelera il tempo per ottenere informazioni dettagliate, tra data warehouse e sistemi di analisi di Big Data. La visualizzazione dei dati è un componente chiave per ottenere informazioni dettagliate sui dati. Consente di semplificare la comprensione dei dati di grandi dimensioni e di piccole dimensioni per gli esseri umani. Semplifica anche il rilevamento di modelli, tendenze e outlier in gruppi di dati.

Quando si usa Apache Spark in Azure Synapse Analytics, sono disponibili varie opzioni predefinite per visualizzare i dati, tra cui le opzioni del grafico dei notebook di Synapse, l'accesso alle librerie open source più diffuse e l'integrazione con Synapse SQL e Power BI.

Opzioni del grafico dei notebook

Quando si usa un notebook di Azure Synapse, è possibile trasformare la visualizzazione dei risultati tabulari in un grafico personalizzato usando le opzioni del grafico. Qui è possibile visualizzare i dati senza dover scrivere codice.

funzione display(df)

La display funzione consente di trasformare query SQL e dataframe apache Spark e RDD in visualizzazioni di dati avanzate. La display funzione può essere usata in dataframe o RDD creati in PySpark, Scala, Java, R e .NET.

Per accedere alle opzioni del grafico:

  1. L'output dei %%sql comandi magic viene visualizzato nella visualizzazione tabella di cui è stato eseguito il rendering per impostazione predefinita. È anche possibile chiamare display(df) sulla funzione Spark DataFrames o Resilient Distributed Datasets (RDD) per produrre la vista tabella di cui è stato eseguito il rendering.

  2. Dopo aver eseguito il rendering di una vista tabella, passare alla visualizzazione Grafico. built-in-charts

  3. È ora possibile personalizzare la visualizzazione specificando i valori seguenti:

    Impostazione Descrizione
    Tipo di grafico La display funzione supporta un'ampia gamma di tipi di grafico, tra cui grafici a barre, grafici a dispersione, grafici a linee e altro ancora
    Key Specificare l'intervallo di valori per l'asse x
    Valore Specificare l'intervallo di valori per i valori dell'asse y
    Series Group Usato per determinare i gruppi per l'aggregazione
    Aggregazione Metodo per aggregare i dati nella visualizzazione

    Nota

    Per impostazione predefinita, la display(df) funzione accetta solo le prime 1000 righe dei dati per il rendering dei grafici. Controllare l'aggregazione su tutti i risultati e fare clic sul pulsante Applica per applicare la generazione del grafico dall'intero set di dati. Un processo Spark verrà attivato quando cambia l'impostazione del grafico. Si noti che potrebbero essere necessari alcuni minuti per completare il calcolo ed eseguire il rendering del grafico.

  4. Al termine, è possibile visualizzare e interagire con la visualizzazione finale.

dettagli delle statistiche display(df)

È possibile usare display(df, summary = true) per controllare il riepilogo delle statistiche di un dataframe apache Spark che include il nome della colonna, il tipo di colonna, i valori univoci e i valori mancanti per ogni colonna. È anche possibile selezionare una colonna specifica per visualizzare il valore minimo, il valore massimo, il valore medio e la deviazione standard. built-in-charts-summary

opzione displayHTML()

I notebook di Azure Synapse Analytics supportano la grafica HTML usando la displayHTML funzione .

L'immagine seguente è un esempio di creazione di visualizzazioni con D3.js.

d3-js-example

Eseguire il codice seguente per creare la visualizzazione precedente.

displayHTML("""<!DOCTYPE html>
<meta charset="utf-8">

<!-- Load d3.js -->
<script src="https://d3js.org/d3.v4.js"></script>

<!-- Create a div where the graph will take place -->
<div id="my_dataviz"></div>
<script>

// set the dimensions and margins of the graph
var margin = {top: 10, right: 30, bottom: 30, left: 40},
  width = 400 - margin.left - margin.right,
  height = 400 - margin.top - margin.bottom;

// append the svg object to the body of the page
var svg = d3.select("#my_dataviz")
.append("svg")
  .attr("width", width + margin.left + margin.right)
  .attr("height", height + margin.top + margin.bottom)
.append("g")
  .attr("transform",
        "translate(" + margin.left + "," + margin.top + ")");

// Create Data
var data = [12,19,11,13,12,22,13,4,15,16,18,19,20,12,11,9]

// Compute summary statistics used for the box:
var data_sorted = data.sort(d3.ascending)
var q1 = d3.quantile(data_sorted, .25)
var median = d3.quantile(data_sorted, .5)
var q3 = d3.quantile(data_sorted, .75)
var interQuantileRange = q3 - q1
var min = q1 - 1.5 * interQuantileRange
var max = q1 + 1.5 * interQuantileRange

// Show the Y scale
var y = d3.scaleLinear()
  .domain([0,24])
  .range([height, 0]);
svg.call(d3.axisLeft(y))

// a few features for the box
var center = 200
var width = 100

// Show the main vertical line
svg
.append("line")
  .attr("x1", center)
  .attr("x2", center)
  .attr("y1", y(min) )
  .attr("y2", y(max) )
  .attr("stroke", "black")

// Show the box
svg
.append("rect")
  .attr("x", center - width/2)
  .attr("y", y(q3) )
  .attr("height", (y(q1)-y(q3)) )
  .attr("width", width )
  .attr("stroke", "black")
  .style("fill", "#69b3a2")

// show median, min and max horizontal lines
svg
.selectAll("toto")
.data([min, median, max])
.enter()
.append("line")
  .attr("x1", center-width/2)
  .attr("x2", center+width/2)
  .attr("y1", function(d){ return(y(d))} )
  .attr("y2", function(d){ return(y(d))} )
  .attr("stroke", "black")
</script>

"""
)

Librerie Python

Quando si tratta di visualizzazione dei dati, Python offre più librerie di gragrafi che sono dotate di molte funzionalità diverse. Per impostazione predefinita, ogni pool di Apache Spark in Azure Synapse Analytics contiene un set di librerie open source curate e diffuse. È anche possibile aggiungere o gestire altre librerie e versioni usando le funzionalità di gestione delle librerie di Azure Synapse Analytics.

Matplotlib

È possibile eseguire il rendering delle librerie di tracciatura standard, ad esempio Matplotlib, usando le funzioni di rendering predefinite per ogni libreria.

L'immagine seguente è un esempio di creazione di un grafico a barre con Matplotlib. Line graph example.

Eseguire questo codice di esempio per disegnare l'immagine precedente.

# Bar chart

import matplotlib.pyplot as plt

x1 = [1, 3, 4, 5, 6, 7, 9]
y1 = [4, 7, 2, 4, 7, 8, 3]

x2 = [2, 4, 6, 8, 10]
y2 = [5, 6, 2, 6, 2]

plt.bar(x1, y1, label="Blue Bar", color='b')
plt.bar(x2, y2, label="Green Bar", color='g')
plt.plot()

plt.xlabel("bar number")
plt.ylabel("bar height")
plt.title("Bar Chart Example")
plt.legend()
plt.show()

Bokeh

È possibile eseguire il rendering di librerie HTML o interattive, ad esempio bokeh, usando .displayHTML(df)

L'immagine seguente è un esempio di glifi tracciati su una mappa che usa bokeh.

bokeh-example

Eseguire questo codice di esempio per disegnare l'immagine precedente.

from bokeh.plotting import figure, output_file
from bokeh.tile_providers import get_provider, Vendors
from bokeh.embed import file_html
from bokeh.resources import CDN
from bokeh.models import ColumnDataSource

tile_provider = get_provider(Vendors.CARTODBPOSITRON)

# range bounds supplied in web mercator coordinates
p = figure(x_range=(-9000000,-8000000), y_range=(4000000,5000000),
           x_axis_type="mercator", y_axis_type="mercator")
p.add_tile(tile_provider)

# plot datapoints on the map
source = ColumnDataSource(
    data=dict(x=[ -8800000, -8500000 , -8800000],
              y=[4200000, 4500000, 4900000])
)

p.circle(x="x", y="y", size=15, fill_color="blue", fill_alpha=0.8, source=source)

# create an html document that embeds the Bokeh plot
html = file_html(p, CDN, "my plot1")

# display this html
displayHTML(html)

Plotly

È possibile eseguire il rendering di librerie HTML o interattive, ad esempio Plotly, usando displayHTML().

Eseguire il codice di esempio seguente per disegnare l'immagine seguente.

plotly-example

from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
    counties = json.load(response)

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/fips-unemp-16.csv",
                   dtype={"fips": str})

import plotly
import plotly.express as px

fig = px.choropleth(df, geojson=counties, locations='fips', color='unemp',
                           color_continuous_scale="Viridis",
                           range_color=(0, 12),
                           scope="usa",
                           labels={'unemp':'unemployment rate'}
                          )
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})

# create an html document that embeds the Plotly plot
h = plotly.offline.plot(fig, output_type='div')

# display this html
displayHTML(h)

Pandas

È possibile visualizzare l'output HTML del dataframe pandas come output predefinito, il notebook mostrerà automaticamente il contenuto HTML in stile.

Panda graph example.

import pandas as pd 
import numpy as np 

df = pd.DataFrame([[38.0, 2.0, 18.0, 22.0, 21, np.nan],[19, 439, 6, 452, 226,232]], 

                  index=pd.Index(['Tumour (Positive)', 'Non-Tumour (Negative)'], name='Actual Label:'), 

                  columns=pd.MultiIndex.from_product([['Decision Tree', 'Regression', 'Random'],['Tumour', 'Non-Tumour']], names=['Model:', 'Predicted:'])) 

df 

Librerie aggiuntive

Oltre a queste librerie, il runtime di Azure Synapse Analytics include anche il set di librerie che vengono spesso usate per la visualizzazione dei dati:

È possibile visitare la documentazione del runtime di Azure Synapse Analytics per informazioni aggiornate sulle librerie e le versioni disponibili.

Librerie R (anteprima)

L'ecosistema R offre più librerie di grafici che sono dotate di molte funzionalità diverse. Per impostazione predefinita, ogni pool di Apache Spark in Azure Synapse Analytics contiene un set di librerie open source curate e diffuse. È anche possibile aggiungere o gestire altre librerie e versioni usando le funzionalità di gestione delle librerie di Azure Synapse Analytics.

ggplot2

La libreria ggplot2 è molto diffusa per la visualizzazione dei dati e l'analisi esplorativa dei dati.

Screenshot of a ggplot2 graph example.

library(ggplot2)
data(mpg, package="ggplot2") 
theme_set(theme_bw()) 

g <- ggplot(mpg, aes(cty, hwy))

# Scatterplot
g + geom_point() + 
  geom_smooth(method="lm", se=F) +
  labs(subtitle="mpg: city vs highway mileage", 
       y="hwy", 
       x="cty", 
       title="Scatterplot with overlapping points", 
       caption="Source: midwest")

rBokeh

rBokeh è una libreria di tracciamento R nativa per la creazione di grafica interattiva supportata dalla libreria di visualizzazioni Bokeh.

Per installare rBokeh, è possibile usare il comando seguente:

install.packages("rbokeh")

Dopo l'installazione, è possibile sfruttare rBokeh per creare visualizzazioni interattive.

Screenshot of a rBokeh graph example.

library(rbokeh)
p <- figure() %>%
  ly_points(Sepal.Length, Sepal.Width, data = iris,
    color = Species, glyph = Species,
    hover = list(Sepal.Length, Sepal.Width))

R Plotly

La libreria di grafici R di Plotly rende grafici interattivi di qualità della pubblicazione.

Per installare Plotly, è possibile usare il comando seguente:

install.packages("plotly")

Dopo l'installazione, è possibile sfruttare Plotly per creare visualizzazioni interattive.

Screenshot of a Plotly graph example.

library(plotly) 

fig <- plot_ly() %>% 
  add_lines(x = c("a","b","c"), y = c(1,3,2))%>% 
  layout(title="sample figure", xaxis = list(title = 'x'), yaxis = list(title = 'y'), plot_bgcolor = "#c7daec") 

fig

Highcharter

Highcharter è un wrapper R per la libreria JavaScript highcharts e i relativi moduli.

Per installare Highcharter, è possibile usare il comando seguente:

install.packages("highcharter")

Dopo l'installazione, è possibile sfruttare Highcharter per creare visualizzazioni interattive.

Screenshot of a Highcharter graph example.

library(magrittr)
library(highcharter)
hchart(mtcars, "scatter", hcaes(wt, mpg, z = drat, color = hp)) %>%
  hc_title(text = "Scatter chart with size and color")

Connessione a Power BI con Apache Spark & SQL su richiesta

Azure Synapse Analytics si integra in modo approfondito con Power BI, consentendo ai data engineer di creare soluzioni di analisi.

Azure Synapse Analytics consente ai diversi motori di calcolo dell'area di lavoro di condividere database e tabelle tra i pool di Spark e il pool SQL serverless. Usando il modello di metadati condiviso, è possibile eseguire query sulle tabelle di Apache Spark usando SQL su richiesta. Al termine, è possibile connettere l'endpoint SQL su richiesta a Power BI per eseguire facilmente query sulle tabelle Spark sincronizzate.

Passaggi successivi