Ir para conteúdo principal

Vinculando expressões em aplicativos modelo On-Demand

As vinculações de dados em um aplicativo modelo especificam quais dados de um aplicativo de seleção correspondente são usados para formular as consultas emitidas durante o carregamento de dados no aplicativo on-demand.

A forma básica de associação de expressões--$(odag_FIELDNAME)--não é o único método disponível para associar expressões. Outros prefixos podem ser usados para refinar as seleções e garantir que o aplicativo modelo carregue dados corretamente.

Aviso: Aplicativos modelo criados originalmente usando a extensão do Qlik Sense para On-demand App Generation devem ser alterados para usar a abordagem ilustrada abaixo para vincular um grande número de seleções de um campo.

Prefixos de associação disponíveis

O formato do prefixo geral é odag[s|o][n][cnt], em que:

  • s - incluir apenas valores selecionados
  • o - incluir apenas valores opcionais
  • n - escolher a versão numérica, por padrão sem aspas
  • cnt - inserir o número de valores em vez de valores reais

A tabela a seguir fornece uma lista de todas as versões dos prefixos de associação disponíveis. Os exemplos assumem um campo chamado MyField com 1,2,3 como os valores selecionados (valores verdes) e 4 como um valor selecionado opcional (valor branco).

Prefixos de associação
Prefixo Descrição Exemplo Substituído por
odag_ Substituído pelos valores selecionados (verdes) e opcionais (brancos). Seleciona a versão em texto dos valores. Este é o prefixo padrão para valores de string. $(odag_MyField) '1','2','3','4'
odagcnt_ Substituído pelo número de valores na associação odag_ correspondente. Esse prefixo é usado para otimização de consultas. $(odagcnt_MyField) 4
odagn_

Substituído pelos valores selecionados (verdes) e opcionais (brancos). Seleciona a versão numérica dos valores. Este é o prefixo padrão para valores numéricos.

Nota:

Se o modelo de dados for tal que não possa haver valores selecionados ou opcionais do campo, um noValue deverá ser especificado na expressão. Por exemplo, $(odagn_MyField){"noValue":"-99999"}.

Para obter mais informações, consulte Alterando os caracteres de aspa e delimitadores de valores.

$(odagn_MyField) 1,2,3,4
odagncnt_ Substituído pelo número de valores na associação odagn_ correspondente. Isso é usado para otimização de consultas. $(odagncnt_MyField) 4
odago_

Substituído pelos valores opcionais (brancos). Seleciona a versão em texto dos valores. Isso é usado para otimização de consultas.

Otimizando para um banco de dados grande.

$(odago_MyField) '4'
odagocnt_ Substituído pelo número de valores na associação odago_ correspondente. Isso é usado para otimização de consultas. $(odagocnt_MyField) 1
odagon_

Substituído pelos valores opcionais (brancos). Seleciona a versão numérica dos valores. Isso é usado para otimização de consultas.

Otimizando para um banco de dados grande.

$(odagon_MyField) 4
odagoncnt_ Substituído pelo número de valores na associação odagon_ correspondente. Isso é usado para otimização de consultas. $(odagoncnt_MyField) 1
odags_

Substituído pelos valores selecionados (verdes). Seleciona a versão em texto dos valores. Isso é usado para otimização de consultas.

Otimizando para um banco de dados grande.

$(odags_MyField) '1','2','3'
odagscnt_ Substituído pelo número de valores na associação odags_ correspondente. Isso é usado para otimização de consultas. $(odagscnt_MyField) 3
odagsn_

Substituído pelos valores selecionados (verdes). Seleciona a versão numérica dos valores. Isso é usado para otimização de consultas.

Otimizando para um banco de dados grande.

$(odagsn_MyField) 1,2,3
odagsncnt_ Substituído pelo número de valores na associação odagsn_ correspondente. Isso é usado para otimização de consultas. $(odagsncnt_MyField) 3
Nota:

Os valores vazios são removidos nas versões em texto. Valores não numéricos e NaN são removidos nas versões numéricas.

Otimizando para um banco de dados grande

Os prefixos odags_ e odagsn_ destinam-se à otimização de consultas. Quando não há seleções nos campos associados, odag_ inclui todos os valores, enquanto odags_ não inclui valores. Em alguns casos, é mais eficiente usar os prefixos odags_ e odagscnt_. Isso permite testar se o conjunto de valores está vazio. Por exemplo, o seguinte é mais eficiente quando nenhuma seleção é feita em MyField do que testar todos os valores em odag_MyField:

WHERE ($(odagscnt_MyField)=0 OR MyColumn IN ($(odags_MyField)))

odags_ não pode ser usado quando há um campo alternativo para selecionar no aplicativo de seleção que não seja um campo sob demanda. Por exemplo, se o usuário fizer seleções em CountryName, mas a expressão de associação estiver no campo associado CountryCode, odags_ não poderá ser usado. Nesses casos, odago_ pode ser usado em seu lugar. Se não houver valores em uma associação odago_, isso pode significar que todos os valores devem ser incluídos ou que nenhum valor deve ser incluído.

Associando valores numéricos

Quando os dados a serem vinculados ao aplicativo On-demand consistem em números em vez de cadeias de caracteres, é útil desativar o comportamento de delimitação entre aspas nos campos numéricos. Por exemplo, se os registros de vendas incluírem uma coluna numérica DAY_OF_WEEK, e você quiser que o usuário do aplicativo de seleção escolha combinações arbitrárias de DAY_OF_WEEK, será possível aumentar a consulta de agregação utilizada para carregar o aplicativo de seleção de forma a incluir DAY_OF_WEEK tanto na lista SELECT quanto na lista GROUP BY. Se aspas forem colocadas ao redor de valores DAY_OF_WEEK quando esses forem selecionados, um erro de consulta de tempo de execução poderá ocorrer caso o banco de dados não ofereça suporte à conversão automática de tipos de cadeia de caractere em tipos numéricos.

Para lidar com essa situação, você pode usar uma versão numérica do sufixo da expressão de associação. Isso força a associação de campo a usar os valores numéricos do aplicativo de seleção em vez de valores de string. As seguintes versões numéricas estão disponíveis:

  • odagn_
  • odagon_
  • odagsn_

Ao usar versões numéricas, os valores são selecionados da parte numérica nas duplas que armazenam os valores selecionados, e os valores estão sem aspas por padrão.

Exigindo um certo número de seleções

Em algumas situações, pode ser necessário exigir que a consulta do aplicativo On-demand contenha um número específico ou um intervalo de valores para um campo específico. Por exemplo, se a consulta do aplicativo On-demand contiver uma cláusula BETWEEN para obter todas as vendas entre uma data de início e uma data de término, a expressão de associação para o campo YEARQUARTER poderá ter uma sintaxe de sufixo de [2] que exigirá exatamente que dois valores sejam selecionados para YEARQUARTER, como em:

$(odag_YEARQUARTER)[2]

O ponto de navegação do aplicativo on-demand no aplicativo de seleção permanecerá desativado enquanto não houver exatamente dois valores de YEARQUARTER selecionados. Uma mensagem será exibida para indicar que exatamente dois valores de YEARQUARTER devem ser selecionados.

Restrições de quantidade de seleção criam uma vinculação de pré-requisito entre o aplicativo de seleção e o aplicativo on-demand. Isso é diferente de expressões de associação que não usam restrições de quantidade. Por exemplo, quando o script do aplicativo modelo contém uma expressão de associação sem uma restrição de quantidade, como em:

$(odag_MYFIELD)

não há exigência de que o aplicativo de seleção contenha um campo denominado MYFIELD ou de que existam valores selecionados desse campo se ele existir. Se o aplicativo de seleção não contiver um campo denominado MYFIELD ou se o usuário simplesmente deixar de fazer seleções a partir dele, o ponto de navegação do aplicativo on-demand ainda poderá ser habilitado quando outras seleções forem feitas para atender à condição de valor de limite de registros.

Por outro lado, se a expressão de associação for:

$(odag_MYFIELD)[1+]

haverá agora duas exigências impostas ao aplicativo de seleção:

  • O aplicativo de seleção deve conter um campo denominado MYFIELD.
  • O usuário deve selecionar pelo menos um valor para MYFIELD.

Esse tipo de expressão de associação deve ser usado com cautela, pois limita quais aplicativos de seleção podem ser usados com o aplicativo modelo. Você não deve usar essa restrição de quantidade nas associações de um aplicativo modelo, a menos que esteja certo de que deseja impor esse requisito de quantidade de seleção em todos os aplicativos de seleção que se liguem a esse aplicativo modelo.

Para executar o processo de vinculação de dados, o serviço de aplicativo On-demand usa uma abordagem de substituição de string que não é sensível aos comentários no script. Isso significa que você não deve usar expressões de vinculação em comentários, a menos que queira que esses comentários contenham a lista de valores vinculados após a geração do aplicativo.

Outras restrições de quantidade são possíveis. A tabela a seguir resume as diferentes combinações de restrições de quantidade de seleção.

Diferentes combinações de restrições de quantidade de seleção
Padrão de restrição Exigência de seleção
$(odag_YEARQUARTER)[2] Exatamente 2 valores de YEARQUARTER devem ser selecionados.
$(odag_YEARQUARTER)[2-4] Entre 2 e 4 valores de YEARQUARTER devem ser selecionados.
$(odag_YEARQUARTER)[2+] Pelo menos 2 valores de YEARQUARTER devem ser selecionados.
$(odag_YEARQUARTER)[2-] No máximo 2 valores de YEARQUARTER podem ser selecionados.
Nota: A verificação para determinar se todas as restrições de quantidade no aplicativo modelo foram atendidas é realizada durante o processo de geração do aplicativo. Se uma restrição de quantidade for violada, a solicitação para gerar o aplicativo será rejeitada e uma mensagem de erro será exibida.

Alterando os caracteres de aspa e delimitadores de valores

Quando uma lista de valores de um campo selecionado em um aplicativo de seleção é inserida no script de um aplicativo modelo, os valores são delimitados por aspas simples e separados por vírgulas. Esses são os caracteres padrão para aspas e delimitadores. Esses valores podem ser alterados na sintaxe anexada ao comando de vinculação de cada campo. Por exemplo:

$(odag_ORIGIN){"quote": "|", "delimiter": ";"}

Esses novos valores são, então, usados ao formular a lista de valores de associação extraídos do aplicativo de seleção. Por exemplo, se os valores selecionados fossem os três primeiros meses do ano, a lista seria construída como:

|Janeiro|;|Fevereiro|;|Março|

Os valores padrão para os caracteres de aspa e delimitador funcionam na maioria dos bancos de dados SQL padrão. Mas eles podem não funcionar para alguns bancos de dados SQL e não funcionam para muitas fontes de dados dinâmicas, como NoSQL e REST. Para essas fontes, você precisa anexar essa expressão de vinculação para alterar os caracteres de aspa e delimitador.

A tabela a seguir descreve os parâmetros de formato para alterar os caracteres de aspas e delimitador.

Parâmetros de formato
Parâmetro Valor padrão Definição
quote

' (aspas simples) para prefixos de texto

vazio para prefixos numéricos

Será adicionado antes e depois de cada valor
delimiter , (vírgula) Será adicionado entre todos os valores
quoteReplace '' (aspas simples duplas)

Quando o valor não estiver vazio e as aspas não estiverem vazias, todas as ocorrências das aspas dentro dos valores serão substituídas pela string especificada.

Nota: quoteReplace não tem suporte como parâmetro para prefixos numéricos, como odagn_. quoteReplace é ignorado por prefixos numéricos.
noValue (vazio)

Quando não houver valores selecionados para um campo, esse valor será usado no lugar. Esse parâmetro é útil quando não pode haver valores de um determinado campo na seleção.

O valor deve ser definido como um valor que não existe nos dados de origem. Para valores numéricos, por exemplo, use um valor negativo se todos os valores no banco de dados forem positivos.

Nota: Para valores sem aspas, noValue deverá ser especificado se os valores selecionados do campo puderem ser um conjunto vazio.

As tabelas a seguir descrevem a especificação de formato e os valores gerados para odag_ e odagn_. Os valores inseridos gerados são baseados nos valores de dados padrão de VAL1, VAL2.

Especificações de formato de exemplo de odag_ e valores gerados
Especificação de formato Descrição Valores inseridos gerados
não especificado

Lista de valores separados por vírgula, entre aspas ' .

'VAL1','VAL2'
{"quote": "", "delimiter": ""} Valores concatenados VAL1VAL2

{"quote": "X", "delimiter": "Y"}

Valores com aspas por X e delimitados por Y.  XVAL1XYXVAL2X
{"quote": "XX", "delimiter": "YY"} Valores com aspas por XX e delimitados por YY.  XXVAL1XXYYXXVAL2XX
{"quote": "X"} Valores com aspas por X e delimitados por , (padrão).  XVAL1X,XVAL2X
{"delimiter": "YY"} Valores com aspas por ' (padrão) e delimitados por YY 'VAL1'YY'VAL2'
{"quote": ""} Valores sem aspas delimitados por ,. VAL1,VAL2
{"quote": "A", "quoteReplace": "\\A"}

Valores com aspas por A e delimitados por vírgula (padrão). Um valor dentro do campo será substituído por \A.

Nota:

Nesse exemplo, é necessário haver um caractere \ duplo, pois \ é o caractere de escape no formato json.

AV\AL1A,AV\AL2A
Especificações de formato de exemplo de odagn_ e valores gerados
Especificação de formato Descrição Valores inseridos gerados
não especificado

Lista separada por vírgula de valores sem aspas. Observe que os valores numéricos serão usados.

VAL1,VAL2
{"delimiter": "YY"} Valores sem aspas delimitados por YY VAL1YYVAL2
{"quote": "A", "quoteReplace": "\\A"} Comparado com o prefixo odag_, o parâmetro quoteReplace será ignorado. AVAL1A,AVAL2A

Processando valores individuais

Quando o processamento individual de valores de campo é necessário, você pode usar um método em linha para gerar valores na variável Values e executar o processamento arbitrário com Replace ou outra função. No exemplo abaixo, Replace é usado com valores de espaço reservado.

MyTempBindingData: LOAD * INLINE [VAL $(odag_MyField){"quote": "", "delimiter": "\n"} ]; _TempTable: LOAD Concat(chr(39) & Replace(text, from_str, to_str) & chr(39), ',') as CombinedData Resident MyTempBindingData; LET Values = Peek('CombinedData',0,'_TempTable'); drop table _TempTable; drop table MyTempBindingData;