Este documento detalha detalhes importantes a serem conhecidos ao escrever consultas no Adobe Experience Platform Query Service.
Para obter informações detalhadas sobre a sintaxe SQL usada em Query Service, leia o Documentação da sintaxe SQL.
Adobe Experience Platform Query Service O tem dois modelos de execução de consulta: interativo e não interativo. A execução interativa é usada para desenvolvimento de consultas e geração de relatórios em ferramentas de business intelligence, enquanto a não interativa é usada para trabalhos maiores e consultas operacionais como parte de um fluxo de trabalho de processamento de dados.
As consultas podem ser executadas interativamente enviando-as por meio do Query Service Interface do usuário ou por meio de um cliente conectado. Ao executar Query Service por meio de um cliente conectado, uma sessão ativa é executada entre o cliente e Query Service até que a consulta enviada retorne ou atinja o tempo limite.
A execução de consulta interativa tem as seguintes limitações:
Parâmetro | Limitação |
---|---|
Tempo limite da consulta | 10 minutos |
Máximo de linhas retornadas | 50.000 |
Máximo de consultas simultâneas | 5 |
Para substituir a limitação máxima de linhas, inclua LIMIT 0
em sua query. O tempo limite de consulta de 10 minutos ainda se aplica.
Por padrão, os resultados de consultas interativas são retornados ao cliente e não persistente. Para manter os resultados como um conjunto de dados no Experience Platform, o query deve usar o CREATE TABLE AS SELECT
sintaxe.
Consultas enviadas por meio do Query Service As APIs são executadas de forma não interativa. A execução não interativa significa que Query Service recebe a chamada da API e executa a consulta na ordem em que é recebida. Consultas não interativas sempre resultam na geração de um novo conjunto de dados no Experience Platform para receber os resultados ou a inserção de novas linhas em um conjunto de dados existente.
Para acessar um campo dentro de um objeto em sua query, você pode usar a notação de pontos (.
) ou notação de colchetes ([]
). A instrução SQL a seguir usa a notação de pontos para percorrer endUserIds
objeto até o mcid
objeto.
A ID de Experience Cloud (ECID) também é conhecida como MCID e continua a ser usada em namespaces.
SELECT endUserIds._experience.mcid
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
Propriedade | Descrição |
---|---|
{ANALYTICS_TABLE_NAME} |
O nome da tabela de análise. |
A instrução SQL a seguir usa a notação de colchetes para percorrer endUserIds
objeto até o mcid
objeto.
SELECT endUserIds['_experience']['mcid']
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
Propriedade | Descrição |
---|---|
{ANALYTICS_TABLE_NAME} |
O nome da tabela de análise. |
Como cada tipo de notação retorna os mesmos resultados, o tipo escolhido depende da sua preferência.
Ambos os exemplos de consultas acima retornam um objeto nivelado, em vez de um único valor:
endUserIds._experience.mcid
--------------------------------------------------------
(48168239533518554367684086979667672499,"(ECID)",true)
(1 row)
O resultado endUserIds._experience.mcid
contém os valores correspondentes para os seguintes parâmetros:
id
namespace
primary
Quando a coluna é declarada somente para o objeto, ela retorna o objeto inteiro como uma string. Para exibir somente a ID, use:
SELECT endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
endUserIds._experience.mcid.id
----------------------------------------
48168239533518554367684086979667672499
(1 row)
Aspas simples, aspas duplas e aspas posteriores têm usos diferentes nas consultas do Serviço de consulta.
Aspas simples ('
) é usado para criar cadeias de texto. Por exemplo, ela pode ser usada na variável SELECT
para retornar um valor de texto estático no resultado, e na variável WHERE
para avaliar o conteúdo de uma coluna.
A consulta a seguir declara um valor de texto estático ('datasetA'
) para uma coluna:
SELECT
'datasetA',
timestamp,
web.webPageDetails.name
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
A consulta a seguir usa uma sequência de caracteres entre aspas ('homepage'
) na sua cláusula WHERE para retornar eventos de uma página específica.
SELECT
timestamp,
endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE web.webPageDetails.name = 'homepage'
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
As aspas duplas ("
) é usado para declarar um identificador com espaços.
A consulta a seguir usa aspas duplas para retornar valores de colunas especificadas quando uma coluna contém um espaço em seu identificador:
SELECT
no_space_column,
"space column"
FROM
( SELECT
'column1' as no_space_column,
'column2' as "space column"
)
aspas duplas não é possível ser usado com acesso de campo de notação de pontos.
A aspa invertida `
é usado para evitar nomes de colunas reservadas somente ao usar a sintaxe da notação de pontos. Por exemplo, desde order
é uma palavra reservada no SQL, você deve usar aspas invertidas para acessar o campo commerce.order
:
SELECT
commerce.`order`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Aspas invertidas também são usadas para acessar um campo que começa com um número. Por exemplo, para acessar o campo 30_day_value
, seria necessário usar a notação de aspas invertidas.
SELECT
commerce.`30_day_value`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
As aspas traseiras são não necessário se estiver usando a notação de colchetes.
SELECT
commerce['order']
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Depois de se conectar ao Serviço de consulta, você pode ver todas as tabelas disponíveis na Platform usando o \d
ou SHOW TABLES
comandos.
A variável \d
mostra o padrão PostgreSQL exibição para tabelas de listagem. Um exemplo da saída desse comando pode ser visto abaixo:
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | luma_midvalues | table | postgres
public | luma_postvalues | table | postgres
(2 rows)
SHOW TABLES
é um comando personalizado que fornece informações mais detalhadas sobre as tabelas. Um exemplo da saída desse comando pode ser visto abaixo:
name | dataSetId | dataSet | description | resolved
-----------------+--------------------------+----------------+-------------+----------
luma_midvalues | 5bac030c29bb8d12fa992e58 | Luma midValues | | false
luma_postvalues | 5c86b896b3c162151785b43c | Luma midValues | | false
(2 rows)
Para exibir informações mais detalhadas sobre os schemas na tabela, você pode usar o \d {TABLE_NAME}
, onde {TABLE_NAME}
é o nome da tabela cujas informações de esquema você deseja exibir.
O exemplo a seguir mostra as informações do esquema para a variável luma_midvalues
tabela, que seria vista usando \d luma_midvalues
:
Table "public.luma_midvalues"
Column | Type | Collation | Nullable | Default
-------------------+-----------------------------+-----------+----------+---------
timestamp | timestamp | | |
_id | text | | |
productlistitems | anyarray | | |
commerce | luma_midvalues_commerce | | |
receivedtimestamp | timestamp | | |
enduserids | luma_midvalues_enduserids | | |
datasource | datasource | | |
web | luma_midvalues_web | | |
placecontext | luma_midvalues_placecontext | | |
identitymap | anymap | | |
marketing | marketing | | |
environment | luma_midvalues_environment | | |
_experience | luma_midvalues__experience | | |
device | device | | |
search | search | | |
Além disso, você pode obter mais informações sobre uma coluna específica ao anexar o nome da coluna ao nome da tabela. Isso seria gravado no formato \d {TABLE_NAME}_{COLUMN}
.
O exemplo a seguir mostra informações adicionais para o web
e seria chamado usando o seguinte comando: \d luma_midvalues_web
:
Composite type "public.luma_midvalues_web"
Column | Type | Collation | Nullable | Default
----------------+-----------------------------------+-----------+----------+---------
webpagedetails | luma_midvalues_web_webpagedetails | | |
webreferrer | web_webreferrer | | |
É possível unir vários conjuntos de dados para incluir dados de outros conjuntos de dados em sua consulta.
O exemplo a seguir associaria os dois conjuntos de dados a seguir (your_analytics_table
e custom_operating_system_lookup
) e cria um SELECT
instrução para os 50 principais sistemas operacionais por número de exibições de página.
Consulta
SELECT
b.operatingsystem AS OperatingSystem,
SUM(a.web.webPageDetails.pageviews.value) AS PageViews
FROM your_analytics_table a
JOIN custom_operating_system_lookup b
ON a._experience.analytics.environment.operatingsystemID = b.operatingsystemid
WHERE TIMESTAMP >= TO_TIMESTAMP('2018-01-01') AND TIMESTAMP <= TO_TIMESTAMP('2018-12-31')
GROUP BY OperatingSystem
ORDER BY PageViews DESC
LIMIT 50;
Resultados
OperatingSystem | PageViews |
---|---|
Windows 7 | 2781979.0 |
Windows XP | 1669824.0 |
Windows 8 | 420024.0 |
Adobe AIR | 315032.0 |
Windows Vista | 173566.0 |
Mobile iOS 6.1.3 | 119069.0 |
Linux | 56516.0 |
OSX 10.6.8 | 53652.0 |
Android 4.0.4 | 46167.0 |
Android 4.0.3 | 31852.0 |
Windows Server 2003 e XP edição x64 | 28883.0 |
Android 4.1.1 | 24336.0 |
Android 2.3.6 | 15735.0 |
OSX 10.6 | 13357.0 |
Windows Phone 7.5 | 11054.0 |
Android 4.3 | 9221.0 |
O Serviço de Consulta oferece suporte à desduplicação de dados ou à remoção de linhas duplicadas dos dados. Para obter mais informações sobre desduplicação, leia a Guia de desduplicação do Serviço de consulta.
O Serviço de consulta padroniza os dados persistentes no Adobe Experience Platform usando o formato de carimbo de data e hora UTC. Para obter mais informações sobre como traduzir o requisito de fuso horário de e para um carimbo de data e hora UTC, consulte o Seção de perguntas frequentes sobre como alterar o fuso horário de e para um carimbo de data e hora UTC.
Ao ler este documento, você recebeu algumas considerações importantes ao gravar consultas usando Query Service. Para obter mais informações sobre como usar a sintaxe SQL para gravar suas próprias consultas, leia o Documentação da sintaxe SQL.
Para obter mais exemplos de consultas que podem ser usadas no Serviço de consulta, leia a documentação do caso de uso a seguir: