Análise detalhada de dados mais eficaz

Uma funcionalidade única do Looker é que se liga diretamente à sua base de dados. Isto significa que pode sempre aceder aos dados mais recentes e analisar detalhadamente até ao nível mais detalhado disponível. Assim, embora possa ver resumos anuais ou mensais, o Looker também oferece a opção de analisar instantaneamente o dia, a hora ou o segundo.

Esta página oferece exemplos de como personalizar e tirar partido da detalização de dados para criar experiências de análise mais poderosas para os seus utilizadores, incluindo:

  • Personalizar a forma como os valores são apresentados nas tabelas de dados de detalhe básicos
  • Personalizar a visualização de detalhes para criar uma experiência de detalhes visuais

Personalizar a forma como os valores são apresentados nas tabelas de dados de detalhe básicos

A arquitetura moderna nativa da Web do Looker permite-lhe fazer muito mais do que apenas detalhar de um nível para o nível mais detalhado seguinte. Pode criar qualquer caminho de detalhe personalizado com apenas alguns parâmetros.

Os exemplos seguintes demonstram como pode personalizar a forma como os dados são apresentados nas tabelas de detalhe, incluindo:

  • Adicionar limites de linhas personalizados (até 5000 linhas) a uma tabela de detalhe
  • Adicionar ordenações a uma tabela de detalhe
  • Adicionar eixos de rotação a uma tabela de detalhe

Adicionar limites de linhas (até 5000 linhas) a uma tabela de detalhe

A adição de limites de linhas a uma tabela de detalhe permite-lhe controlar a forma como os dados são apresentados aos utilizadores quando detalham os valores das medidas. Por exemplo, e se quisesse apresentar apenas os primeiros 20 resultados numa tabela detalhada quando um utilizador detalha um valor da métrica Quantidade devolvida? Pode usar o parâmetro link e definir o subparâmetro url como "{{ link }}&limit=20", como no seguinte código LookML:

measure: returned_count {
  type: count_distinct
  sql: ${id} ;;
  filters: [is_returned: "yes"]
  drill_fields: [detail*]
  link: {
    label: "Explore Top 20 Results"
    url: "{{ link }}&limit=20"
  }
}

set: detail {
  fields: [id, order_id, status, created_date, sale_price, products.brand, products.item_name, users.email]
}

Isto permite aos utilizadores analisar detalhadamente os 20 principais resultados selecionando Explorar os 20 principais resultados no menu de análise detalhada da métrica Quantidade devolvida:

Adicionar ordenações a uma tabela de detalhe

Além de limitar os dados, também pode controlar a forma como os dados são ordenados numa tabela de detalhe. Por exemplo, e se quisesse apresentar os 20 resultados por Preço de venda quando um utilizador detalha um valor da métrica Quantidade devolvida? Pode usar o link parâmetro e definir o subparâmetro url como "{{ link }}&sorts=order_items.sale_price". O seguinte código LookML combina a ordenação personalizada com um limite de linhas personalizado:

measure: returned_count {
  type: count_distinct
  sql: ${id} ;;
  filters: [is_returned: "yes"]
  drill_fields: [detail*]
  link: {
    label: "Explore Top 20 Results by Sale Price"
    url: "{{ link }}&sorts=order_items.sale_price+desc&limit=20"
  }
}

set: detail {
  fields: [id, order_id, status, created_date, sale_price, products.brand, products.item_name, users.email]
}

Isto permite aos utilizadores analisar detalhadamente os 20 principais resultados por preço de venda selecionando Explorar os 20 principais resultados por preço de venda no menu de análise detalhada da métrica Preço de venda:

Adicionar eixos de rotação a uma tabela de detalhe

Além de limitar e ordenar os dados, também pode dinamizar dimensões numa tabela de detalhe. Por exemplo, e se quisesse adicionar uma tabela dinâmica a um campo Nível de idade para mostrar o ano e o nível de percentagem da margem bruta para cada grupo etário quando um utilizador detalha um valor de medida Número de encomendas? Pode usar o parâmetro link e definir o subparâmetro url como "&pivots=users.age_tier":

measure: order_count {
  type: count_distinct
  drill_fields: [created_year, item_gross_margin_percentage_tier, users.age_tier, total_sale_price]
  link: {
    label: "Total Sale Price by Month for Each Age Tier"
    url: "{{link}}&pivots=users.age_tier"
  }
  sql: ${order_id} ;;
}

Isto permite que os utilizadores analisem o ano e a percentagem da margem bruta de cada faixa etária quando selecionam Preço de venda total por mês para cada nível de idade no menu de análise detalhada da métrica Número de encomendas:

Criar uma experiência de detalhes visuais

As tabelas de dados transmitem dados de formas eficazes, mas e se quiser visualizar os dados que um utilizador vê quando detalha? Existem várias formas de apresentar dados detalhados em visualizações, além das tabelas de dados. Esta secção inclui os seguintes exemplos:

  • Explorar dados detalhados com a funcionalidade do Labs Visual Drilling
  • Detalhar um gráfico de dispersão com um limite e uma média móvel
  • Detalhar até um gráfico de linhas empilhado com tabelas dinâmicas
  • Explorar detalhes até uma visualização personalizada
  • Detalhar uma tabela de cálculo com formatação condicional

Explorar dados detalhados com a funcionalidade do Labs Visual Drilling

A funcionalidade do Labs Visual Drilling permite que os utilizadores analisem detalhadamente uma exploração ou uma pesquisa. Sem personalização e com um conjunto de detalhes limitado, pode apresentar dados de detalhes em diferentes tipos de visualização pré-selecionados com base nos dados do Looker.

A funcionalidade do Labs detalhes visuais não é suportada pelos painéis de controlo. Para painéis de controlo, pode criar uma experiência de detalhe visual com o parâmetro link sem ter de ativar a funcionalidade do Labs. As secções seguintes fornecem exemplos de como criar uma experiência de detalhe visual através do parâmetro link.

Por exemplo, para mostrar quantos artigos foram vendidos por dia, pode criar uma medida que detalhe os campos Data de criação e Preço total de venda:

measure: count {
  type: count_distinct
  sql: ${id} ;;
  drill_fields: [created_date, total_sale_price]
}

A detalhamento visual é a opção mais simples. No entanto, e se quiser controlar o tipo de visualização apresentado aos utilizadores quando detalham? As secções seguintes fornecem exemplos de como personalizar ainda mais uma visualização de detalhe.

Detalhar um gráfico de dispersão com um limite e uma média móvel

Pode permitir que os utilizadores analisem detalhadamente um gráfico de dispersão que inclua uma linha de tendência de média móvel. Por exemplo, suponhamos que quer apresentar quantos artigos foram vendidos por dia como um gráfico de dispersão com uma média móvel de 30 dias:

Para o fazer, pode especificar definições de visualização num URL através de variáveis Liquid. Estas definições controlam a visualização que aparece na análise detalhada:

measure: count {
  type: count_distinct
  sql: ${id} ;;
  drill_fields: [created_date, total_sale_price]
  link: {
    label: "Show as scatter plot"
    url: "
    {% assign vis_config = '{
     \"stacking\" : \"\",
     \"show_value_labels\" : false,
     \"label_density\" : 25,
     \"legend_position\" : \"center\",
     \"x_axis_gridlines\" : true,
     \"y_axis_gridlines\" : true,
     \"show_view_names\" : false,
     \"limit_displayed_rows\" : false,
     \"y_axis_combined\" : true,
     \"show_y_axis_labels\" : true,
     \"show_y_axis_ticks\" : true,
     \"y_axis_tick_density\" : \"default\",
     \"y_axis_tick_density_custom\": 5,
     \"show_x_axis_label\" : false,
     \"show_x_axis_ticks\" : true,
     \"x_axis_scale\" : \"auto\",
     \"y_axis_scale_mode\" : \"linear\",
     \"show_null_points\" : true,
     \"point_style\" : \"circle\",
     \"ordering\" : \"none\",
     \"show_null_labels\" : false,
     \"show_totals_labels\" : false,
     \"show_silhouette\" : false,
     \"totals_color\" : \"#808080\",
     \"type\" : \"looker_scatter\",
     \"interpolation\" : \"linear\",
     \"series_types\" : {},
     \"colors\": [
     \"palette: Santa Cruz\"
     ],
     \"series_colors\" : {},
     \"x_axis_datetime_tick_count\": null,
     \"trend_lines\": [
      {
      \"color\" : \"#000000\",
      \"label_position\" : \"left\",
      \"period\" : 30,
      \"regression_type\" : \"average\",
      \"series_index\" : 1,
      \"show_label\" : true,
      \"label_type\" : \"string\",
      \"label\" : \"30 day moving average\"
      }
     ]
    }' %}
     {{ link }}&vis_config={{ vis_config | encode_uri }}&toggle=dat,pik,vis&limit=5000"
  }
}

Detalhar até um gráfico de linhas empilhado com tabelas dinâmicas

Também pode permitir que os utilizadores analisem detalhadamente um gráfico de linhas empilhadas, por exemplo, um gráfico de linhas empilhadas que apresenta o preço total de venda para cada número do mês, com base no ano de criação:

O seguinte LookML especifica as definições para a visualização anterior:

measure: total_sale_price {
  type: sum
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [total_sale_price, created_month_name, created_year]
  link: {
    label: "Show as stacked line"
    url: "
    {% assign vis_config = '{
     \"stacking\" : \"normal\",
     \"legend_position\" : \"right\",
     \"x_axis_gridlines\" : false,
     \"y_axis_gridlines\" : true,
     \"show_view_names\" : false,
     \"y_axis_combined\" : true,
     \"show_y_axis_labels\" : true,
     \"show_y_axis_ticks\" : true,
     \"y_axis_tick_density\" : \"default\",
     \"show_x_axis_label\" : true,
     \"show_x_axis_ticks\" : true,
     \"show_null_points\" : false,
     \"interpolation\" : \"monotone\",
     \"type\" : \"looker_line\",
     \"colors\": [
     \"#5245ed\",
     \"#ff8f95\",
     \"#1ea8df\",
     \"#353b49\",
     \"#49cec1\",
     \"#b3a0dd\"
     ],
     \"x_axis_label\" : \"Month Number\"
    }' %}
     {{ link }}&vis_config={{ vis_config | encode_uri }}&sorts=order_items.created_year+asc,order_items.created_month_name+asc&pivots=order_items.created_year&toggle=dat,pik,vis&limit=500&column_limit=15"
  } # NOTE the &pivots=
}

Explorar detalhes até uma visualização personalizada

Também pode permitir que os utilizadores vejam detalhes de uma visualização personalizada:

Para tal, pode incluir a visualização personalizada nas definições de visualização que especificar para o parâmetro link:

measure: average_shipping_time {
  type: average
  value_format_name: decimal_2
  sql: ${shipping_time} ;;
  drill_fields: [products.category, users.age_tier, average_shipping_time]
  link: {
    label: "See as custom viz (heatmap)"
    url: "
    {% assign vis_config = '{
     \"minColor\" : \"#d6d6d6\",
     \"maxColor\" : \"#9a33e3\",
     \"dataLabels\" : false,
     \"custom_color_enabled\" : false,
     \"custom_color\" : \"forestgreen\",
     \"show_single_value_title\": true,
     \"show_comparison\" : false,
     \"comparison_type\" : \"value\",
     \"comparison_reverse_colors\": false,
     \"show_comparison_label\" : true,
     \"show_view_names\" : true,
     \"show_row_numbers\" : true,
     \"truncate_column_names\" : false,
     \"hide_totals\" : false,
     \"hide_row_totals\" : false,
     \"table_theme\" : \"editable\",
     \"limit_displayed_rows\" : false,
     \"enable_conditional_formatting\": false,
     \"conditional_formatting_include_totals\": false,
     \"conditional_formatting_include_nulls\": false,
     \"type\" : \"highcharts_heatmap\",
     \"stacking\" : \"\",
     \"show_value_labels\" : false,
     \"label_density\" : 25,
     \"legend_position\" : \"center\",
     \"x_axis_gridlines\" : false,
     \"y_axis_gridlines\" : true,
     \"y_axis_combined\" : true,
     \"show_y_axis_labels\" : true,
     \"show_y_axis_ticks\" : true,
     \"y_axis_tick_density\" : \"default\",
     \"y_axis_tick_density_custom\": 5,
     \"show_x_axis_label\" : true,
     \"show_x_axis_ticks\" : true,
     \"x_axis_scale\" : \"auto\",
     \"y_axis_scale_mode\" : \"linear\",
     \"ordering\" : \"none\",
     \"show_null_labels\" : false,
     \"show_totals_labels\" : false,
     \"show_silhouette\" : false,
     \"totals_color\" : \"#808080\",
     \"series_types\" : {},
     \"hidden_fields\" : [
     \"order_items.count\",
     \"order_items.total_sale_price\"
     ]
    }' %}
     {{ link }}&vis_config={{ vis_config | encode_uri }}&sorts=products.category+asc,users.age_tier+asc&toggle=dat,pik,vis&limit=5000"
  }
}

Detalhar uma tabela de cálculo com formatação condicional

Também pode permitir que os utilizadores analisem detalhadamente um cálculo de tabela que apresenta formatação condicional:

Isto pode ser definido no LookML da seguinte forma:

measure: total_sale_price {
  type: sum
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [created_month, users.gender, total_sale_price]
  link: {
    label: "Table Calc & Total"
    url: "
    {% assign table_calc = '[
     { \"table_calculation\": \"percent_of_total\",
     \"label\": \"Percent of Total\",
     \"expression\": \"${order_items.total_sale_price:row_total} / sum(${order_items.total_sale_price:row_total})\",
     \"value_format\": null,
     \"value_format_name\": \"percent_2\",
     \"_kind_hint\": \"supermeasure\",
     \"_type_hint\": \"number\"
     },
     { \"table_calculation\": \"growth_rate\",
     \"label\": \"Growth Rate\",
     \"expression\": \"${order_items.total_sale_price} / offset(${order_items.total_sale_price},1) - 1\",
     \"value_format\": null,
     \"value_format_name\": \"percent_2\",
     \"_kind_hint\": \"measure\",
     \"_type_hint\": \"number\"
    }]' %}
    {% assign vis_config = '{
     \"type\": \"table\",
     \"show_view_names\": false,
     \"show_row_numbers\": false,
     \"truncate_column_names\": false,
     \"table_theme\": \"gray\",
     \"enable_conditional_formatting\": true,
     \"conditional_formatting\": [
     {
     \"type\": \"low to high\",
     \"value\": null,
     \"background_color\": null,
     \"font_color\": null,
     \"palette\": {
     \"name\": \"Custom\",
     \"colors\": [
     \"#FFFFFF\",
     \"#6e00ff\"
     ]},
     \"bold\": false,
     \"italic\": false,
     \"strikethrough\": false,
     \"fields\": [
     \"growth_rate\"
     ]},{
     \"type\": \"low to high\",
     \"value\": null,
     \"background_color\": null,
     \"font_color\": null,
     \"palette\": {
     \"name\": \"Custom\",
     \"colors\": [
     \"#FFFFFF\",
     \"#88ff78\"
     ]},
     \"bold\": false,
     \"italic\": false,
     \"strikethrough\": false,
     \"fields\": [
     \"percent_of_total\"
    ]}]}' %}
     {{link}}&total=on&row_total=right&dynamic_fields={{ table_calc |replace(') ', '' | encode_uri }}&pivots=users.gender&vis_config={{ vis_config |replace(') ', '' | encode_uri }}"
  }
}