Análise de dados mais eficiente

Um recurso exclusivo do Looker é que ele se conecta diretamente ao seu banco de dados. Isso significa que você sempre pode acessar os dados mais recentes e aprofundar o nível mais granular disponível. Assim, embora você possa conferir resumos anuais ou mensais, o Looker também oferece a opção de detalhar para o dia, a hora ou o segundo instantaneamente.

Esta página mostra exemplos de como personalizar e aproveitar o detalhamento de dados para criar experiências de análise mais eficientes para os usuários, incluindo:

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

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

A arquitetura moderna nativa da Web do Looker permite fazer muito mais do que apenas detalhar um nível para o próximo nível mais granular. Você pode criar qualquer caminho de detalhamento personalizado com apenas alguns parâmetros.

Os exemplos a seguir demonstram como personalizar a forma como os dados são apresentados nas tabelas de detalhamento, incluindo:

  • Como adicionar limites personalizados de linhas (até 5.000 linhas) a uma tabela detalhada
  • Como adicionar classificações a uma tabela de detalhamento
  • Como adicionar tabelas dinâmicas a uma tabela de detalhamento

Como adicionar limites de linhas (até 5.000 linhas) a uma tabela de detalhamento

Com a adição de limites de linha a uma tabela detalhada, é possível controlar como os dados são apresentados aos usuários quando eles detalham os valores das medidas. Por exemplo, o que acontece quando você quer mostrar apenas os 20 primeiros resultados em uma tabela de detalhamento quando um usuário detalha um valor de medida Returned Count? Use o parâmetro link e defina o subparâmetro url como "{{ link }}&limit=20", como no código do LookML a seguir:

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]
}

Isso permite que os usuários acessem os 20 principais resultados selecionando Analisar os 20 principais resultados no menu de detalhamento da métrica Contagem retornada:

Como adicionar classificações a uma tabela de detalhamento

Além de limitar os dados, você também pode controlar como eles são ordenados em uma tabela detalhada. Por exemplo, digamos que você queira mostrar os 20 resultados por Preço de venda quando um usuário detalhar um valor de medida Contagem de devoluções. Use o parâmetro link e defina o subparâmetro url como "{{ link }}&sorts=order_items.sale_price". O código do LookML a seguir combina a classificaçã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]
}

Assim, os usuários podem analisar os 20 principais resultados por preço promocional selecionando Analisar os 20 principais resultados por preço promocional no menu de detalhamento da medida Preço promocional:

Como adicionar tabelas dinâmicas a uma tabela de detalhamento

Além de limitar e classificar os dados, você também pode girar as dimensões em uma tabela detalhada. Por exemplo, imagine que você queira adicionar um pivot a um campo Faixa etária para mostrar o ano e a porcentagem de margem bruta de cada faixa etária quando um usuário detalhar um valor de métrica Contagem de pedidos. Use o parâmetro link e defina o subatributo 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} ;;
}

Assim, os usuários podem analisar o ano e a porcentagem da margem bruta de cada faixa etária ao selecionar Preço total de vendas por mês para cada faixa etária no menu de detalhamento da métrica Contagem de pedidos:

Como criar uma experiência de detalhamento visual

As tabelas de dados transmitem dados de maneira eficaz, mas e se você quiser visualizar os dados que um usuário vê ao fazer um detalhamento? Há várias maneiras de mostrar dados de detalhamento em visualizações, além das tabelas de dados. Esta seção inclui os seguintes exemplos:

  • Detalhamento com o recurso Visual Drilling do Labs
  • Aprofundar em um gráfico de dispersão com um limite e uma média móvel
  • Como acessar um gráfico de linhas empilhadas com pivots
  • Como detalhar uma visualização personalizada
  • Como acessar um cálculo de tabela com formatação condicional

Detalhamento com o recurso Visual Drilling do Labs

O recurso Visual Drilling Labs permite que os usuários aprofundem em uma Análise detalhada ou um Look. Sem personalização e com um conjunto de detalhamento limitado, é possível mostrar dados de detalhamento em diferentes tipos de visualização pré-selecionados com base nos dados do Looker.

O recurso de Visual Drilling Labs não é compatível com painéis. Para painéis, é possível criar uma experiência de detalhamento visual com o parâmetro link sem precisar ativar o recurso Labs. As seções a seguir mostram exemplos de como criar uma experiência de detalhamento visual usando o parâmetro link.

Por exemplo, para mostrar quantos itens foram vendidos por dia, crie uma métrica que aprofunde os campos Data de criação e Preço de venda total:

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

A análise detalhada visual é a opção mais simples. No entanto, e se você quiser controlar o tipo de visualização que aparece para os usuários quando eles fazem uma análise detalhada? As seções a seguir fornecem exemplos de como personalizar ainda mais uma visualização detalhada.

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

Você pode permitir que os usuários acessem um gráfico de dispersão que inclui uma linha de tendência de média móvel. Por exemplo, suponha que você queira mostrar quantos itens foram vendidos por dia em um gráfico de dispersão com uma média móvel de 30 dias:

Para fazer isso, especifique as configurações de visualização em um URL usando variáveis do Liquid. Essas configurações controlam a visualização que aparece no detalhamento:

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

Como acessar um gráfico de linhas empilhadas com pivots

Você também pode permitir que os usuários acessem um gráfico de linhas empilhadas, por exemplo, um gráfico de linhas empilhadas que mostra o preço total da venda para cada número do mês, com pivote por ano de criação:

O LookML a seguir especifica as configurações da 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=
}

Como detalhar uma visualização personalizada

Também é possível permitir que os usuários acessem uma visualização personalizada:

Para fazer isso, inclua a visualização personalizada nas configurações que você especificou 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"
  }
}

Como acessar um cálculo de tabela com formatação condicional

Também é possível permitir que os usuários acessem um cálculo de tabela que mostra formatação condicional:

Isso pode ser definido no LookML da seguinte maneira:

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