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_formatsquando 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:
_rfnpara refinamento._extpara visualização que requer extensão._sdtpara tabelas derivadas baseadas em SQL._ndtpara a tabela derivada nativa._pdtpara a tabela derivada persistente._xvwpara 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_spartpode 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
hiddencomo "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_labelegroup_labelsã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_filtersno 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_filtersfor 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_rfnemsales_orders_rfn2. - Edite a propriedade da etiqueta: altere a propriedade
labeldeaverage_salespara "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_rfn2na 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_rfne guarde-o. - Inclua a vista base: isto incorpora todas as definições da
vista base
sales_invoicesemsales_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
includeem 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_configtipo 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_countryfiltro 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.