Compartilhar via


Visualizar dados

O Azure Synapse é um serviço de análise integrada que acelera o tempo de descoberta de insights entre data warehouses e sistemas de análise de Big Data. A visualização de dados é um componente fundamental na capacidade de obter insights sobre seus dados. Ele ajuda a facilitar o entendimento para pessoas de dados grandes e pequenos. Ele também facilita a detecção de padrões, tendências e exceções em grupos de dados.

Ao usar Apache Spark no Azure Synapse Analytics, há várias opções internas para ajudá-lo a visualizar seus dados, incluindo opções de gráfico do notebook Synapse, acesso a bibliotecas open-source populares e a integração com o SQL do Synapse e Power BI.

Opções de gráfico do notebook

Ao usar um notebook do Azure Synapse, você pode transformar sua exibição de resultados tabulares em um gráfico personalizado usando opções de gráfico. Aqui, você pode visualizar seus dados sem precisar escrever nenhum código.

função display(df)

A função display permite transformar consultas SQL e dataframes e RDDs do Apache Spark em visualizações de dados ricas. A função display pode ser usada em dataframes ou RDDs criados em PySpark, Scala, Java, R e .NET.

Para acessar as opções de gráfico:

  1. A saída dos comandos magic %%sql aparecem na exibição de tabela renderizada por padrão. Você também pode chamar display(df) na função RDD (Resilient Distributed Datasets) para produzir a exibição de tabela renderizada.

  2. Quando você tiver uma exibição de tabela renderizada, alterne para a exibição de gráfico. built-in-charts

  3. Agora você pode personalizar sua visualização especificando os seguintes valores:

    Configuração Descrição
    Tipo de Gráfico A função display dá suporte a uma ampla variedade de tipos de gráfico, incluindo gráficos de barras, gráficos de dispersão, gráficos de linhas e muito mais
    Chave Especificar o intervalo de valores para o eixo x
    Valor Especificar o intervalo de valores para os valores do eixo y
    Grupo de Série Usado para determinar os grupos para a agregação
    Agregação Método para agregar dados em sua visualização

    Observação

    Por padrão, a função display(df) usará apenas as primeiras 1000 linhas dos dados para renderizar os gráficos. Verifique a Agregação em todos os resultados e clique no botão Aplicar, você aplicará a geração de gráfico do conjunto de dados inteiro. Um trabalho do Spark será acionado quando a configuração do gráfico for alterada. Observe que pode levar vários minutos para concluir o cálculo e renderizar o gráfico.

  4. Depois de terminar, você pode exibir e interagir com sua visualização final!

Detalhes da estatística display(df)

Você pode usar display(df, summary = true) para verificar o resumo das estatísticas de um determinado DataFrame do Apache Spark que inclui o nome da coluna, tipo de coluna, valores exclusivos e valores ausentes para cada coluna. Você também pode selecionar uma coluna específica para ver seu valor mínimo, valor máximo, valor médio e desvio padrão. built-in-charts-summary

opção displayHTML()

Os notebooks do Azure Synapse Analytics dão suporte a gráficos HTML usando a função displayHTML.

A imagem a seguir é um exemplo de criação de visualizações usando D3.js.

d3-js-example

Execute o código abaixo para criar a visualização acima.

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>

"""
)

Bibliotecas de Python

Quando se trata de visualização de dados, o Python oferece várias bibliotecas de gráficos que vêm incluídas com muitos recursos diferentes. Por padrão, cada Pool do Apache Spark no Azure Synapse Analytics contém um conjunto de bibliotecas de código-fonte aberto populares e selecionadas. Você também pode adicionar ou gerenciar bibliotecas e versões adicionais usando os recursos de gerenciamento de biblioteca do Azure Synapse Analytics.

Matplotlib

Você pode renderizar bibliotecas de plotagem padrão, como Matplotlib, usando as funções de renderização internas para cada biblioteca.

A imagem a seguir é um exemplo de criação de um gráfico de barras usando Matplotlib. Line graph example.

Execute o código de exemplo a seguir para desenhar a imagem acima.

# 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

Você pode renderizar bibliotecas HTML ou interativas, como a bokeh, usando displayHTML(df) .

A imagem a seguir é um exemplo de como plotar glifos em um mapa usando bokeh.

bokeh-example

Execute o código de exemplo a seguir para desenhar a imagem acima.

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

Você pode renderizar bibliotecas HTML ou interativas, como a Plotly, usando displayHTML() .

Execute o código de exemplo a seguir para desenhar a imagem abaixo.

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

Você pode exibir a saída html do dataframe do Pandas como a saída padrão. O notebook mostrará automaticamente o conteúdo html com estilo.

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 

Bibliotecas adicionais

Além dessas bibliotecas, o Runtime do Azure Synapse Analytics também inclui o seguinte conjunto de bibliotecas que geralmente são usadas para visualização de dados:

Você pode visitar a documentação de Runtime do Azure Synapse Analytics para obter as informações mais atualizadas sobre as bibliotecas e versões disponíveis.

Bibliotecas do R (versão prévia)

O ecossistema do R oferece várias bibliotecas de criação de grafo que vêm repletas de muitos recursos diferentes. Por padrão, cada Pool do Apache Spark no Azure Synapse Analytics contém um conjunto de bibliotecas de código-fonte aberto populares e selecionadas. Você também pode adicionar ou gerenciar bibliotecas e versões adicionais usando os recursos de gerenciamento de biblioteca do Azure Synapse Analytics.

ggplot2

A biblioteca ggplot2 é popular para visualização de dados e análise exploratória de dados.

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 é uma biblioteca de plotagem R nativa para criar gráficos interativos que são apoiados pela biblioteca de visualização Bokeh.

Para instalar o rBokeh, você pode usar o seguinte comando:

install.packages("rbokeh")

Depois de instalado, você pode aproveitar o rBokeh para criar visualizações interativas.

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

A biblioteca de grafos Plotly's R cria grafos interativos com qualidade de publicação.

Para instalar o Plotly, você pode usar o seguinte comando:

install.packages("plotly")

Depois de instalado, você pode aproveitar o Plotly para criar visualizações interativas.

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 é um wrapper R para a biblioteca JavaScript Highcharts e seus módulos.

Para instalar o Highcharter, você pode usar o seguinte comando:

install.packages("highcharter")

Depois de instalado, você pode aproveitar o Highcharter para criar visualizações interativas.

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")

Conectar-se ao Power BI usando o Apache Spark & SQL Sob Demanda

O Azure Synapse Analytics integra-se profundamente ao Power BI permitindo que os engenheiros de dados criem soluções de análise.

O Azure Synapse Analytics permite que os diferentes mecanismos computacionais do workspace compartilhem bancos de dados e tabelas entre os pools do Spark e o pool de SQL sem servidor. Usando o modelo de metadados compartilhado, você pode consultar suas tabelas do Apache Spark usando o SQL sob demanda. Depois de concluído, você pode conectar seu ponto de extremidade do SQL sob demanda ao Power BI para consultar facilmente suas tabelas do Spark sincronizadas.

Próximas etapas