Exploration de données plus puissante

L'une des fonctionnalités uniques de Looker est qu'il se connecte directement à votre base de données. Cela signifie que vous avez toujours accès aux données les plus récentes et que vous avez toujours la possibilité d'afficher le niveau le plus précis disponible. Ainsi, bien que vous puissiez afficher des résumés annuels ou mensuels, Looker permet également d'explorer en détail le jour, l'heure ou la seconde instantanément.

Cette page fournit des exemples illustrant comment personnaliser et exploiter l'analyse de données afin de créer des expériences analytiques plus performantes pour vos utilisateurs, y compris:

  • Personnalisation de la présentation des valeurs dans les tableaux de données d'analyse de base
  • Personnaliser la visualisation en détail pour créer une expérience d'exploration visuelle

Personnalisation de la présentation des valeurs dans les tableaux de données d'analyse de base

L'architecture Web native moderne de Looker vous permet bien plus que d'explorer les données d'un niveau de précision supérieur à celui le plus précis. Vous pouvez créer n'importe quel chemin d'exploration personnalisé avec quelques paramètres.

Les exemples suivants montrent comment personnaliser la présentation des données dans les tableaux d'analyse, y compris:

  • Ajouter une limite de lignes personnalisée (jusqu'à 5 000 lignes) à un tableau d'analyse détaillée
  • Ajout de tris à un tableau d'analyse détaillée
  • Ajouter des tableaux croisés dynamiques à un tableau d'analyse détaillée

Ajouter une limite de lignes (jusqu'à 5 000 lignes) à un tableau d'analyse détaillée

L'ajout de limites de lignes à un tableau d'analyse détaillée vous permet de contrôler la façon dont les données sont présentées aux utilisateurs lorsqu'ils détaillent les valeurs de mesure. Par exemple, que se passe-t-il si vous souhaitez afficher uniquement les 20 premiers résultats dans un tableau d'analyse détaillée lorsqu'un utilisateur explore une valeur de mesure Nombre renvoyé ? Vous pouvez utiliser le paramètre link et définir le sous-paramètre url sur "{{ link }}&limit=20", comme dans le code LookML suivant:

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

Cela permet aux utilisateurs d'afficher le détail des 20 premiers résultats en sélectionnant Explore Top 20 Results (Explorer les 20 premiers résultats) dans le menu d'exploration de la mesure Returned Count (Nombre renvoyé) :

Ajout de tris à un tableau d'analyse détaillée

En plus de limiter les données, vous pouvez également contrôler leur tri dans un tableau d'analyse détaillée. Par exemple, que se passe-t-il si vous souhaitez afficher les 20 résultats par Prix soldé lorsqu'un utilisateur explore une valeur de mesure Nombre de retours ? Vous pouvez utiliser le paramètre link et définir le sous-paramètre url sur "{{ link }}&sorts=order_items.sale_price". Le code LookML suivant combine un tri personnalisé avec une limite de lignes personnalisée:

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

Cela permet aux utilisateurs d'afficher le détail des 20 premiers résultats par prix soldé en sélectionnant Découvrir les 20 premiers résultats par prix soldé dans le menu d'analyse de la mesure Prix soldé:

Ajouter des tableaux croisés dynamiques à un tableau d'analyse détaillée

En plus de limiter et de trier les données, vous pouvez également créer un tableau croisé dynamique dans un tableau d'analyse. Par exemple, que se passe-t-il si vous voulez ajouter un tableau croisé dynamique à un champ Tranche d'âge pour afficher l'année et le pourcentage de marge brute pour chaque tranche d'âge lorsqu'un utilisateur accède à une valeur de mesure Nombre de commandes ? Vous pouvez utiliser le paramètre link et définir le sous-paramètre url sur "&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} ;;
}

Cela permet aux utilisateurs d'afficher le détail de l'année et du pourcentage de marge brute pour chaque tranche d'âge en sélectionnant Prix soldé total par mois pour chaque niveau d'âge dans le menu d'analyse de la mesure Nombre de commandes:

Créer une expérience d'exploration visuelle

Les tableaux de données permettent de transmettre des données de manière efficace, mais que se passe-t-il si vous voulez visualiser les données qu'un utilisateur voit lorsqu'il les explore ? En plus des tableaux de données, il existe plusieurs façons d'afficher des données d'exploration dans des visualisations. Cette section comprend les exemples suivants:

  • Exploration détaillée avec la fonctionnalité Labs Perçage visuel
  • Explorer un graphique en nuage de points avec une limite et une moyenne mobile
  • Explorer un graphique en courbes empilées avec des tableaux croisés dynamiques
  • Afficher le détail d'une visualisation personnalisée
  • Afficher le détail d'un calcul de table comportant une mise en forme conditionnelle

Exploration détaillée avec la fonctionnalité Labs Perçage visuel

La fonctionnalité expérimentale d'exploration visuelle permet aux utilisateurs d'explorer une exploration ou une présentation. Vous n'avez aucune personnalisation à effectuer et un aperçu limité vous permet d'afficher des données d'analyse détaillée dans différents types de visualisation présélectionnés par Looker en fonction des données.

La fonctionnalité expérimentale Exploration visuelle n'est pas compatible avec les tableaux de bord. Pour les tableaux de bord, vous pouvez créer une expérience d'exploration visuelle avec le paramètre link, sans avoir à activer la fonctionnalité Labs. Les sections suivantes fournissent des exemples de création d'une expérience d'exploration visuelle à l'aide du paramètre link.

Par exemple, pour indiquer le nombre d'articles vendus par jour, vous pouvez créer une mesure qui affiche les champs Date de création et Prix de vente total:

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

L'exploration visuelle est l'option la plus simple. Toutefois, que se passe-t-il si vous souhaitez contrôler le type de visualisation présenté aux utilisateurs lorsqu'ils explorent en détail ? Les sections suivantes fournissent des exemples de personnalisation d'une visualisation détaillée.

Explorer un graphique en nuage de points avec une limite et une moyenne mobile

Vous pouvez permettre aux utilisateurs d'explorer un graphique à nuage de points qui inclut une ligne de tendance de moyenne mobile. Par exemple, supposons que vous souhaitiez afficher le nombre d'articles vendus par jour sous la forme d'un graphique à nuage de points avec une moyenne mobile sur 30 jours:

Pour ce faire, vous pouvez spécifier des paramètres de visualisation dans une URL à l'aide des variables Liquid. Ces paramètres contrôlent la visualisation qui s'affiche dans l'analyse détaillée:

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

Explorer un graphique en courbes empilées avec des tableaux croisés dynamiques

Vous pouvez également autoriser les utilisateurs à afficher le détail d'un graphique en courbes empilées, par exemple un graphique en courbes empilées qui affiche le prix de vente total pour chaque numéro de mois, réparti par année de création:

Le code LookML suivant spécifie les paramètres de la visualisation précédente:

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

Afficher le détail d'une visualisation personnalisée

Vous pouvez également autoriser les utilisateurs à afficher le détail d'une visualisation personnalisée:

Pour ce faire, vous pouvez inclure la visualisation personnalisée dans les paramètres de visualisation que vous spécifiez pour le paramètre 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"
  }
}

Afficher le détail d'un calcul de table comportant une mise en forme conditionnelle

Vous pouvez également autoriser les utilisateurs à afficher le détail d'un calcul de table qui affiche la mise en forme conditionnelle:

Elle peut être définie en LookML comme suit:

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