Personalize os blocos do Looker
Esta página oferece uma vista geral das práticas recomendadas e exemplos de como adaptar os seguintes blocos do Looker do framework Cortex aos requisitos específicos da sua empresa:
- Bloco do Looker para o Oracle EBS
- Bloco do Looker para Meta
- Bloco do Looker para o YouTube (com o DV360)
Instalação
Pode instalar os blocos do Looker do Cortex Framework de várias formas, conforme detalhado na documentação Implementar blocos do Looker. No entanto, recomendamos que ramifique o repositório como o método mais simples para personalizar blocos de acordo com as necessidades da sua empresa.
Os blocos do Looker da estrutura do Cortex foram criados numa abordagem em camadas em que cada camada adiciona uma parte incremental da lógica à camada anterior:
- Camada base: vistas do LookML geradas pela máquina que fazem referência a tabelas de origem.
- Camada principal: alterações escritas à mão que adicionam novos campos ou modificam campos da camada base.
- Camada lógica: explore definições e associações em diferentes vistas.
A utilização de refinamentos é essencial para esta abordagem em camadas e para a personalização. Além disso, para seguir o princípio DRY (Do Not Repeat Yourself), são usados extends e constants. O conteúdo dinâmico para etiquetas, declarações SQL, HTML e propriedades de links é gerado através da linguagem de modelos Liquid.
Práticas recomendadas gerais da Google:
Organização de ficheiros e pastas
No bloco do Looker, cada pasta representa uma coleção de tipos de objetos (como vistas, Explores, painéis de controlo e outros). Além disso, cada objeto individual é definido num ficheiro separado. A raiz do projeto contém os seguintes ficheiros principais:
- Ficheiro
.model
- Ficheiro de manifesto
- README e outros ficheiros Markdown
- Ficheiros do Marketplace (se o bloco também estiver disponível no mercado do Looker)
Modelo
A gestão de ficheiros modular torna o ficheiro model
do projeto simples com os seguintes parâmetros:
- ligação
-
Os tipos de ficheiros incluídos são os seguintes:
- Componentes (grupos de dados,
named_value_formats
quando relevante) - Explorações (as explorações não estão definidas no ficheiro de modelo)
- Painéis de controlo
- Componentes (grupos de dados,
As declarações include
para as vistas usadas no bloco são definidas em cada ficheiro Explore individual, em vez desta localização, como mostra o exemplo seguinte:
connection: "@{CONNECTION_NAME}"
include: "/components/**/*.lkml"
include: "/explores/**/*.explore"
include: "/dashboards/**/*.dashboard"
Manifesto
O ficheiro de manifesto especifica as constantes que são referenciadas ao longo de um projeto. Seguem-se alguns exemplos das constantes usadas para os nossos blocos:
- Nome da ligação
- ID do projeto
- Conjunto de dados de relatórios
Os blocos do Looker da framework Cortex também usam constantes para definir o seguinte:
- Ver etiquetas
- Etiquetas de campos
- Formatos HTML
- Links de URL
- Nomes dos painéis de controlo
Reveja as constantes definidas para o bloco do Looker e modifique quaisquer dos valores para corresponderem às suas necessidades. As alterações aplicam-se em qualquer lugar onde a constante seja referenciada.
Atributos do utilizador
Alguns dos blocos do Looker requerem que um administrador defina atributos do utilizador na instância do Looker. Estes atributos do utilizador para o idioma ou a moeda predefinidos permitem-lhe personalizar a forma como os painéis de controlo são apresentados por utilizador ou grupo. Consulte a vista geral de cada bloco para mais informações sobre os atributos do utilizador necessários.
Visualizações
As vistas encontradas na pasta Base são as geradas automaticamente através da opção Criar vista a partir da tabela. Estes ficheiros foram alterados minimamente:
- O ID do projeto e o nome do conjunto de dados foram substituídos por constantes.
- Vistas movidas com base em registos aninhados para ficheiros separados.
- Foram removidas definições de campos de detalhe desnecessárias.
Foram criadas modificações significativas a estas vistas, como etiquetas, novas dimensões e medidas, na pasta Core através de refinamentos, extends ou tabelas derivadas.
Na pasta principal, as vistas têm um sufixo que indica o tipo de vista:
_rfn
para refinamento._ext
para visualização que requer extensão._sdt
para tabelas derivadas baseadas em SQL._ndt
para a tabela derivada nativa._pdt
para a tabela derivada persistente._xvw
para campos de referência de visualização de várias visualizações.
Cada definição de visualização começa com anotações que fornecem informações de contexto, incluindo descrições, origens, referências, campos expandidos e outras notas relevantes.
Registos repetidos aninhados
Para tabelas subjacentes que contêm registos repetidos aninhados, o Looker cria vistas separadas para desagrupar estes registos. Por exemplo, no bloco do Looker do Oracle EBS, a tabela sales_orders
tem uma estrutura repetida aninhada denominada lines
. O Looker trata-as como duas vistas distintas: sales_orders
e sales_orders__lines
.
Para juntar estes registos não aninhados na funcionalidade Explorar, tem de definir a junção através da propriedade sql
juntamente com o comando UNNEST.
Para mais informações, consulte o artigo Como modelar dados aninhados do BigQuery no Looker.
Navegar e compreender o código do bloco do Looker
Os blocos do Looker da framework Cortex contêm comentários extensos nas vistas e noutros objetos. Para melhorar a navegação e a compreensão do código, recomendamos que use a opção Fold LookML disponível no ambiente de desenvolvimento do LookML.
Campos
O termo field
refere-se a objetos como
dimension
, measure
, filter
ou parameter
. Nestes blocos mais recentes, seguimos os seguintes princípios:
- As dimensões são denominadas com snake_case (minúsculas e sublinhado entre palavras). Por exemplo:
customer_name
. - Os nomes das colunas das tabelas subjacentes são usados para nomear as dimensões. As etiquetas podem ser aplicadas a dimensões para lhes atribuir um nome adequado para a empresa.
Por exemplo, uma dimensão denominada
division_hdr_spart
pode ser etiquetada como "ID da divisão". - Para tabelas com muitas colunas, os campos estão ocultos por predefinição. Usando um refinamento da vista, defina a propriedade
hidden
como "não" para o subconjunto de campos a apresentar numa análise detalhada. Se um campo não aparecer como previsto, a edição da propriedade deste campo pode resolver o problema. - As propriedades
View_label
egroup_label
são usadas para organizar campos numa análise detalhada, quando aplicável. - Para os campos usados em várias visualizações de propriedades, as propriedades, como a etiqueta, são estabelecidas numa visualização de propriedade "comum", que é posteriormente expandida para outras visualizações de propriedades. Esta abordagem centraliza a definição da propriedade, promovendo a reutilização. Todas as modificações necessárias são geridas na vista "comum", o que garante que as alterações são refletidas em todas as vistas onde a vista "comum" é expandida.
- Os parâmetros usados em várias explorações ou campos que referenciam várias vistas são definidos numa vista apenas de campo com o sufixo
_xvw
. Para mais informações, consulte o artigo Evitar inconsistências nas explorações.
Exemplos de edição
Esta secção apresenta exemplos de personalizações comuns.
Anular ocultação de um campo
A vista base abrange todas as dimensões de uma tabela subjacente. Quando a maioria das dimensões não precisa de estar visível, é usado um refinamento para ocultar todos os campos por predefinição. Isto é conseguido definindo a propriedade fields_hidden_by_default
como "yes". O subconjunto de campos relevantes para os painéis de controlo do LookML incluídos foi apresentado. O exemplo seguinte considera uma vista base denominada
sales_orders
com uma dimensão denominada item_posnr
.
view: sales_order {
sql_table_name: reporting.sales_order ;;
dimension: item_posnr {
type: string
sql: ${TABLE}.Item_POSNR
}
}
O refinamento desta vista é definido no ficheiro com o sufixo _rfn
. O refinamento define a propriedade de visualização fields_hidden_by_default
como "sim", o que significa que todos os campos estão inicialmente ocultos. Para mostrar o campo item_posnr
na vista, defina a propriedade hidden como "no".
view: +sales_order {
fields_hidden_by_default: yes
dimension: item_posnr {
hidden: no
}
}
Alterar a etiqueta da vista de parâmetros
Vários blocos do Looker usam um conjunto partilhado de parâmetros definidos num ficheiro autónomo. Por exemplo, o bloco Oracle EBS usa o ficheiro otc_common_parameters_xvw
. Esta vista apresenta a etiqueta "🔍 Filtros", que está definida como uma constante no ficheiro de manifesto.
Para modificar esta etiqueta:
- Localize a constante
label_view_for_filters
no ficheiro de manifesto. - Edite o valor da constante para a etiqueta escolhida.
- Guarde o ficheiro de manifesto.
A alteração é refletida automaticamente sempre que a constante
label_view_for_filters
for referenciada.
Manifest
constant: label_view_for_filters {
value: "My Filters"
}
Em alternativa, navegue para a vista otc_common_parameters_xvw
e edite a propriedade "label" para o valor escolhido.
view: otc_common_parameters_xvw {
label: "My Filters"
}
Adicionar uma nova medida
É possível adicionar novas métricas diretamente ao refinamento relevante. O exemplo seguinte mostra uma nova medida adicionada ao refinamento de encomendas de vendas:
view: +sales_orders {
measure: customer_count {
type: count_distinct
sql: ${customer_id}
}
}
Adicionar uma segunda camada de refinamento
Os novos refinamentos podem ser criados com base nos refinamentos existentes. Considere o refinamento de sales_orders
no ficheiro sales_orders_rfn.view
que cria a medida average_sales
como o seguinte exemplo:
include: "/views/base/sales_orders"
view: +sales_orders {
measure: average_sales {
type: average
sql: ${order_value}
}
}
Para criar um segundo ficheiro de refinamento:
- Crie um novo ficheiro de refinamento: atribua-lhe o nome
sales_orders_rfn2.view
. - Inclua o primeiro ficheiro de refinamento: isto vai incorporar todas as definições de
sales_orders_rfn
emsales_orders_rfn2
. - Edite a propriedade da etiqueta: altere a propriedade
label
deaverage_sales
para "gasto médio" ou qualquer outra etiqueta escolhida. Adicione uma nova dimensão: inclua o código da nova dimensão no ficheiro
sales_orders_rfn2.view
.include: "/views/core/sales_orders_rfn.view" view: +sales_orders { measure: average_sales { label: "Average Spend" } dimension: customer_name_with_id { type: string sql: CONCAT(${customer_id},' ',${customer_name}) } }
Incluir segundo ficheiro de refinamento na funcionalidade Explorar: isto incorpora todas as definições e melhorias de
sales_orders_rfn2
na funcionalidade Explorar.include: "/views/core/sales_orders_rfn2.view" explore: sales_orders { }
Criar uma nova camada de refinamento
O refinamento de qualquer vista base definida na framework Cortex
Looker Block pode ser substituído se não cumprir os seus
requisitos específicos. O ficheiro _rfn
pode ser editado diretamente para remover definições de campos desnecessárias ou adicionar novas.
Em alternativa, crie um novo ficheiro de refinamento:
- Crie um novo ficheiro de refinamento: atribua-lhe o nome
sales_invoices_rfn
e guarde-o. - Inclua a vista base: isto incorpora todas as definições da
vista base
sales_invoices
emsales_invoices_rfn
. Adicione as personalizações escolhidas: certifique-se de que também define uma dimensão como uma chave principal.
include: "/views/base/sales_invoices.view" view: +sales_invoices { fields_hidden_by_default: yes dimension: invoice_id { hidden: no primary_key: yes value_format_name: id } dimension: business_unit_name { hidden: no sql: CONCAT(${business_unit_id}, ":",${TABLE}.BUSINESS_UNIT_NAME) ;; } }
Inclua o novo refinamento na opção Explorar: use o novo ficheiro na propriedade
include
em vez do refinamento fornecido no bloco do Looker do Cortex Framework.include: "/views/my_customizations/sales_invoices_rfn.view" explore: sales_invoices { }
Editar filtros de painéis de controlo do LookML
O conjunto comum de filtros do painel de controlo usado em vários painéis de controlo do LookML é definido num painel de controlo com o sufixo _template
e estendido a cada painel de controlo. Depois de expandidos, os objetos de filtro podem ser modificados conforme necessário para um painel de controlo específico.
Edição para todos os painéis de controlo
Para alterar o tipo de filtro de todos os painéis de controlo, localize o ficheiro de modelo que define o filtro. Edite o ui_config
tipo e as propriedades de visualização de acordo com as definições escolhidas. Esta alteração vai ser aplicada a todos os painéis de controlo que expandem o modelo. Segue-se um otc_template.dashboard
exemplo:
- dashboard: otc_template
extension: required
filters:
- name: customer_country
title: "Sold to Customer: Country"
type: field_filter
default_value: ''
allow_multiple_values: true
required: false
ui_config:
type: dropdown_menu
display: popover
explore: countries_md
field: countries_md.country_name_landx
Edição para um painel de controlo específico
Para modificar um filtro num painel de controlo específico, localize o ficheiro do painel de controlo e inclua o nome do filtro juntamente com as propriedades selecionadas que requerem modificação. Esta alteração vai limitar-se ao painel de controlo único. Por exemplo, para alterar o título e o tipo de IU e apresentação do customer_country
filtro para o otc_order_status.dashboard
, apenas estas propriedades seriam incluídas no ficheiro do painel de controlo. As restantes propriedades seriam herdadas do modelo expandido.
- dashboard: otc_order_status
title: Order Status
extends: otc_template
filters:
- name: customer_country
title: "Customer Country"
ui_config:
type: dropdown_menu
display: inline
Para mais informações sobre como criar e modificar painéis de controlo do LookML, consulte o artigo Criar painéis de controlo do LookML.