Direct Query
O comando DIRECT QUERY permite acessar tabelas por meio de uma conexãoODBC ou OLE DB usando a função do Direct Discovery.
Sintaxe:
DIRECT QUERY DIMENSION fieldlist [MEASURE fieldlist] [DETAIL fieldlist] FROM tablelist
[WHERE where_clause]
As palavras-chaves DIMENSION, MEASURE e DETAIL podem ser usadas em qualquer ordem.
As cláusulas das palavras-chaves DIMENSION e FROM são obrigatórias em todos os comandos DIRECT QUERY. A palavra-chave FROM deve aparecer após a palavra-chave DIMENSION.
Os campos especificados diretamente após a palavra-chave DIMENSION são carregados na memória e podem ser usados para criar associações entre dados da memória e do Direct Discovery.
Ao usar a palavra-chave MEASURE, é possível definir campos que o Qlik Sense tenha conhecimento a um “nível meta”. Os dados reais de um campo de medida residem apenas no banco de dados durante o processo de carga de dados e são recuperados de forma ad hoc, orientados pelas expressões do gráfico que são usadas em uma visualização.
Normalmente, os campos com valores discretos que serão usados como dimensões devem ser carregados com a palavra-chave DIMENSION, enquanto os números que serão usados em agregações devem ser selecionados apenas com a palavra-chave MEASURE.
DETAIL são campos que fornecem informações ou detalhes, como campos de comentários, que um usuário pode querer exibir em uma tabela. Os campos DETAIL não podem ser usados em expressões de gráfico.
Por concepção, o comando DIRECT QUERY é neutro de fonte de dados para as fontes de dados que oferecem suporte para SQL. Por essa razão, o mesmo comando DIRECT QUERY pode ser usado para diferentes bancos de dados de SQL sem alteração. O Direct Discovery gera consultas apropriadas para o banco de dados, conforme necessário.
A sintaxe nativa da fonte de dados pode ser usada quando o usuário conhece o banco de dados que será consultado e deseja explorar extensões específicas para o banco de dados para o SQL. A sintaxe nativa da fonte de dados é suportada:
- Como expressões de campo nas cláusulas DIMENSION e MEASURE
- Como o conteúdo da cláusula WHERE
Exemplos:
DIMENSION Dim1, Dim2MEASURENATIVE ('X % Y') AS X_MOD_Y
DIMENSION Dim1, Dim2MEASURE X, YFROM TableNameWHERE NATIVE ('EMAIL MATCHES "\*.EDU"')
Argumentos:
Argumento | Descrição |
---|---|
fieldlist |
Uma lista de especificações de campo separada por vírgula, fieldname {, fieldname}. Uma especificação de campo pode ser um nome de campo, no qual o mesmo nome é usado para o nome de coluna do banco de dados e o nome de campo do Qlik Sense. Ou uma especificação de campo pode ser um "alias de campo", no qual uma expressão do banco de dados ou um nome de coluna recebe um nome de campo do Qlik Sense. |
tablelist |
Uma lista de nomes de tabelas ou visualizações no banco de dados dos quais os dados serão carregados. Normalmente, serão exibições que contêm um JOIN realizado no banco de dados. |
where_clause |
A sintaxe completa das cláusulas WHERE do banco de dados não está definida aqui, mas a maioria das "expressões relacionais" SQL é permitida, incluindo o uso de chamadas de função, o operador LIKE para cadeias de caracteres, IS NULL e IS NOT NULL e IN. BETWEEN não está incluído. NOT é um operador unário, ao contrário de um modificador em determinadas palavras-chaves. Exemplos: WHERE x > 100 AND "Region Code" IN ('south', 'west')
WHERE Code IS NOT NULL and Code LIKE '%prospect'
WHERE NOT X in (1,2,3)
O último exemplo não pode ser escrito como: WHERE X NOT in (1,2,3)
|
Exemplo:
Neste exemplo, é usada uma tabela de banco de dados chamada TableName, contendo os campos Dim1, Dim2, Num1, Num2 e Num3.Dim1 e Dim2 serão carregados no conjunto de dados Qlik Sense.
Dim1 e Dim2 estarão disponíveis para uso das dimensões. Num1, Num2 e Num3 estarão disponíveis para agregações. Dim1 e Dim2 também estão disponíveis para agregações. O tipo de agregações para as quais Dim1 e Dim2 podem ser usadas depende de seus tipos de dados. Por exemplo, em muitos casos, os campos DIMENSION contêm dados de caracteres, como nomes ou números de conta. Esses campos não podem ser agrupados, mas podem ser contados: count(Dim1).
Por exemplo, a instrução SELECT:
SQL SELECT
SalesOrderID,
RevisionNumber,
OrderDate,
SubTotal,
TaxAmt
FROM MyDB.Sales.SalesOrderHeader;
pode ser transformada na seguinte instrução DIRECT QUERY:
DIRECT QUERY
DIMENSION
SalesOrderID,
RevisionNumber
MEASURE
SubTotal,
TaxAmt
DETAIL
OrderDate
FROM MyDB.Sales.SalesOrderHeader;