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.
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).
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 informativa
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. |
$(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. |
$(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. |
$(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. |
$(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 |
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:
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:
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:
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:
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.
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. |
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:
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:
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â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 informativaquoteReplace 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 informativa 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çã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 informativa
Nesse exemplo, é necessário haver um caractere \ duplo, pois \ é o caractere de escape no formato json. |
AV\AL1A,AV\AL2A |
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.