Criando um aplicativo modelo On-demand

Um aplicativo modelo On-demand é um aplicativo regular do Qlik Sense com uma diferença importante: seu script de carregamento contém expressões de vinculação de dados usadas para formular as consultas feitas nas fontes de dados. Essas expressões de associação de dados são usadas no momento de geração do aplicativo On-demand para ler valores do estado de seleção do aplicativo de seleção e associá-los ao script do aplicativo modelo, de forma que o aplicativo gerado seja carregado com um subconjunto dos dados controlado pelo usuário.

O aplicativo modelo geralmente se conecta à mesma fonte de dados que o aplicativo de seleção. O script de carregamento de um aplicativo de seleção normalmente carrega dados agregados para reduzir os volumes de dados e, ao mesmo tempo, ainda oferece visualizações interativas de dimensões e medidas importantes. O script de carregamento de um aplicativo modelo usa consultas que carregam um subconjunto controlado de dados mais granulares.

Nota: Um aplicativo modelo on-demand não carrega dados diretamente. A tentativa de carregar dados do aplicativo modelo resultará em erro. A conexão com o aplicativo modelo deve ser válida, mas, para testar se a conexão funciona corretamente, você deve gerar um aplicativo On-demand. Quando um aplicativo On-demand é gerado, o script de carregamento é modificado pelo serviço de aplicativo On-demand para carregar o estado de seleção do aplicativo de seleção On-demand. Se o aplicativo On-demand for gerado sem erros, você saberá que a conexão no aplicativo modelo funciona corretamente.

Estrutura de um aplicativo modelo

Um aplicativo modelo é vinculado a um aplicativo de seleção usando um link de navegação de aplicativo On-demand. O link de navegação de aplicativo inclui propriedades que controlam o número de registros consultados quando o aplicativo On-demand é carregado com dados. O script de carregamento do aplicativo modelo contém expressões de associação de dados que especificam quais dados de campo do aplicativo de seleção são usados para formular as consultas emitidas durante o carregamento de dados no aplicativo On-demand.

Nota: Há uma amostra do aplicativo modelo on-demand incluído na instalação do Qlik Sense em ProgramData\Qlik\Examples\OnDemandApp\sample.

As expressões de associação de dados têm o seguinte formato:

$(od_FIELDNAME)

O prefixo od_ é usado para associar o estado de seleção do aplicativo de seleção ao script de carregamento do aplicativo On-demand, que é criado por meio da cópia do aplicativo modelo. A parte da expressão de associação de dados após o prefixo od_ deve ser um nome que corresponda a um campo no aplicativo de seleção. Quando o aplicativo On-demand é gerado, o estado de seleção atual do aplicativo de seleção é usado para obter os valores desejados a serem associados para cada campo. Cada ocorrência de uma expressão $(od_FIELDNAME) no script de carregamento do aplicativo On-demand recém-criado é substituída pela lista de valores selecionados para o campo correspondente no estado de seleção do aplicativo de seleção.

Para saber mais sobre como vincular valores usando instruções de carregamento INLINE, consulte Vinculando expressões em aplicativos modelo On-Demand.

Para ser uma sintaxe SQL válida, a instrução SELECT do aplicativo modelo para filtrar vários valores deve usar uma cláusula IN. A prática recomendada é escrever uma sub-rotina para criar a cláusula WHERE correta:

SUB ExtendWhere(Name, ValVarName) LET T = Name & '_COLNAME'; LET ColName = $(T); LET Values = $(ValVarName); IF len(Values) > 0 THEN IF len(WHERE_PART) > 0 THEN LET WHERE_PART = '$(WHERE_PART) AND $(ColName) IN ( $(Values) )'; ELSE LET WHERE_PART = ' WHERE $(ColName) IN ( $(Values) )'; ENDIF ENDIF END SUB;

Antes de chamar a subrotina ExtendWhere, você deve definir a variável WHERE_PART.

SET WHERE_PART = '';

Se você deseja que a instrução SQL tenha uma cláusula WHERE inalterável além das cláusulas que serão inseridas pelo aplicativo de seleção, insira um 'WHERE <condition>' na instrução SET. Caso contrário, use a instrução SET simples.

A seguir, há um exemplo de como a sub-rotina ExtendedWhere é usada:

FOR EACH fldname IN 'ORIGIN', 'DEST', 'YEAR', 'QUARTER', 'ORIGIN_STATE_ABR', 'DEST_STATE_ABR' LET vallist = $(fldname); WHEN (IsNull(vallist)) LET vallist = ''; IF len(vallist) > 0 THEN CALL ExtendWhere('$(fldname)','vallist'); ENDIF NEXT fldname

A lista de nomes de campos deve corresponder aos nomes dos campos usados em cada vinculação de campo criada.

Quando a lista de valores para cada campo tiver sido construída, uma instrução SELECT poderá ser escrita. Por exemplo:

SQL SELECT "MKT_ID", "YEAR", "QUARTER", "ORIGIN", "ORIGIN_STATE_ABR", "DEST", "DEST_STATE_ABR", "TICKET_CARRIER", "FARE_CLASS", "PASSENGERS", "DISTANCE", 1 AS "FLIGHT_COUNT" FROM "SAPH7T"."/QT/AIRPORT_FACT" $(WHERE_PART);

A parte $(WHERE_PART) da instrução SELECT será expandida para incluir a cláusula WHERE gerada pela execução do loop FOR-NEXT ilustrado acima. A lista de expressões de coluna após a palavra-chave SELECT deve ser modificada para corresponder às colunas da tabela de banco de dados específica.

Aviso: Evite usar os nomes dos campos do modelo de aplicativo de gabarito ao criar variáveis de vinculação do aplicativo on-demand. As variáveis definidas no script são disponibilizadas no modelo de aplicativo de gabarito que é referenciado ao criar visualizações de dados. A escolha de variáveis de vinculação de aplicativos on-demand que não se sobrepõem aos campos no modelo evitará a confusão involuntária entre os campos no modelo de aplicativo de gabarito e as variáveis de vinculação do aplicativo on-demand no script de carregamento de dados. Uma boa prática é estabelecer um prefixo para variáveis de vinculação de aplicativos on-demand. Por exemplo, use X_ORIGIN em vez de ORIGIN.

Login único (SSO)

Aplicativos On-demand podem usar single sign-on (SSO) com fontes de dados que oferecem suporte para SSO. O mecanismo e a fonte de dados devem estar configurados para permitir o SSO.

Para obter mais informações, consulte Configurando o SAP HANA para logon único SAML com o Qlik Sense (somente em inglês) e Configurando o Cloudera Impala para logon único (somente em inglês).

Quando o mecanismo e a fonte de dados tiverem sido configurados para SSO, o aplicativo modelo deverá habilitar o SSO, adicionando a seguinte sintaxe ao script do aplicativo modelo:

///!ODAG_SSO

O On-Demand App Service analisa o script quando um aplicativo On-demand é gerado e sempre que ele é recarregado.

Quando um aplicativo On-demand é carregado com SSO, a identidade do usuário final é enviada à fonte de dados. O usuário final deve ter acesso às fontes usadas nas conexões de dados do aplicativo modelo. Somente os dados aos quais o usuário tem acesso nessas fontes serão carregados, mesmo que um conjunto maior de dados esteja selecionado.

Aviso: Aplicativos On-demand gerados a partir de aplicativos modelo que usam o single sign-on (SSO) não podem ser publicados.

Recarregar nós para aplicativos modelo

Os administradores podem controlar onde os aplicativos On-demand são recarregados em um ambiente de vários nós, definindo as regras de balanceamento de carga em aplicativos modelo. Quando uma regra de balanceamento de carga é definida, todos os aplicativos gerados de links para o aplicativo modelo serão carregados de acordo com a regra válida para esse aplicativo modelo. Para obter mais informações, consulte Gerenciando aplicativos on-demand (somente em inglês).