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 a análise detalhada para criar experiências de análise mais eficientes para os usuários, incluindo:
- Como personalizar como os valores são apresentados nas tabelas básicas de dados de detalhamento
- Personalizar a visualização detalhada para criar uma experiência visual detalhada
Personalizar a forma como os valores são apresentados nas tabelas de dados de detalhamento básico
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. É possível 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:
- Adicionar limites de linhas personalizadas (até 5.000 linhas) a uma tabela de detalhamento
- Como adicionar classificações a uma tabela de detalhamento
- Adicionar tabelas dinâmicas a uma tabela de detalhamento
Adicionar limites de linhas (até 5.000) a uma tabela de detalhamento
Ao adicionar limites de linhas a uma tabela de detalhamento, você controla como os dados são apresentados aos usuários quando eles detalham os valores da medição. 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] }
Assim, os usuários podem conferir os 20 principais resultados selecionando Explorar os 20 principais resultados no menu de detalhamento da medição Contagem retornada:
Como adicionar classificações a uma tabela de detalhamento
Além de limitar os dados, você também pode controlar como os dados são classificados em uma tabela de detalhamento. Por exemplo, e se você quisesse exibir os 20 resultados por Preço promocional quando um usuário analisar o valor da medida Contagem devolvida? 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 de venda selecionando Analisar os 20 principais resultados por preço de venda no menu de detalhamento da medida Preço de venda:
Adicionar tabelas dinâmicas a uma tabela de detalhamento
Além de limitar e classificar dados, você também pode mudar as dimensões de uma tabela de detalhamento. 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} ;; }
Isso permite que os usuários analisem o ano e a porcentagem de margem bruta de cada faixa etária ao selecionarem Preço de venda total por mês para cada faixa etária no menu de detalhamento da medição Contagem de pedidos:
Como criar uma experiência de detalhamento visual
As tabelas de dados transmitem dados de maneiras eficazes, mas e se você quiser visualizar os dados que um usuário vê durante o 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
- Como acessar um gráfico de dispersão com um limite e uma média móvel
- Como detalhar um gráfico de linhas empilhadas com tabelas dinâmicas
- Como detalhar uma visualização personalizada
- Detalhamento de um cálculo de tabela com formatação condicional
Detalhar com o recurso Laboratórios de detalhamento visual
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. Nos dashboards, é possível criar uma experiência de detalhamento visual com o parâmetrolink
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âmetrolink
.
Por exemplo, para mostrar quantos itens foram vendidos por dia, você pode criar uma medição que detalha 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 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.
Como acessar um gráfico de dispersão com um limite e uma média móvel
Você pode permitir que os usuários analisem um gráfico de dispersão que inclui uma linha de tendência de média móvel. Por exemplo, suponha que você queira exibir quantos itens foram vendidos por dia como 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 as variáveis líquidas. Essas configurações controlam a visualização do 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
Você também pode permitir que os usuários acessem uma visualização personalizada:
Para fazer isso, inclua a visualização personalizada nas configurações de visualização especificadas 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" } }
Detalhamento de um cálculo de tabela com formatação condicional
Você também pode permitir que os usuários analisem um cálculo de tabela que mostra a 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 }}" } }