Mais

Calculando novo campo para representar a soma dos valores no campo existente no ArcMap?

Calculando novo campo para representar a soma dos valores no campo existente no ArcMap?


Preciso calcular a soma total dos valores em um campo existente e exibir esse valor nas células correspondentes de outro campo. Em outras palavras, quero que este segundo campo exiba o mesmo valor em cada linha, sendo o total dos valores do campo de origem. Estou usando o ModelBuilder e operarei essa função em vários conjuntos de dados, portanto, esse processo precisa ser automático. Não tenho experiência com codificação e muito pouca em como implementá-la.

Recentemente fiz uma pergunta semelhante, que foi: "Como calcular os valores cumulativos de um campo". Esta pergunta foi respondida e resolvida com o seguinte analisador python no bloco de código da calculadora de campo:

total = 0 def cumsum (inc): total global total + = total de retorno inc

Onde o bloco de código foi chamado usando:

cumsum (! field_name!)

Como fui capaz de implementar esse analisador com êxito, preferiria que alguém pudesse adaptar este exemplo para calcular a soma total dos valores em um campo em vez de sua soma cumulativa.


Isso pode ser alcançado com um modelo relativamente simples, sem necessidade de programação! O modelo está abaixo:

Eu uso a ferramenta de estatísticas de resumo para somar seu primeiro campo e colocar esse valor em uma tabela in_memory. Em seguida, use a ferramenta get Field value (uma ferramenta somente modelo) para obter esse valor. Em seguida, uma ferramenta de cálculo de campo simples em seu segundo campo usando substituição em linha (neste caso% SUM valor%). A saída da ferramenta Obter valor do campo é uma pré-condição para a ferramenta de cálculo do campo, para que seja executada na ordem correta.


No exemplo acima, várias dimensões podem ser especificadas na lista. Múltiplas métricas agregadas do mesmo tipo de dados podem ser incorporadas via cbind:

(incorporando comentário @thelatemail), o agregado também tem uma interface de fórmula

Ou se quiser agregar várias colunas, você pode usar o. notação (funciona para uma coluna também)

Você também pode usar o dplyr pacote para esse fim:

Ou para múltiplas colunas de resumo (funciona com uma coluna também):

Aqui estão mais alguns exemplos de como resumir dados por grupo usando funções dplyr usando o conjunto de dados integrado mtcars:

Para obter mais informações, incluindo o operador% & gt%, consulte a introdução ao dplyr.

A resposta fornecida pelo rcs funciona e é simples. No entanto, se você estiver lidando com conjuntos de dados maiores e precisar de um aumento de desempenho, há uma alternativa mais rápida:

Vamos comparar isso com a mesma coisa usando data.frame e o acima:

E se você quiser manter a coluna esta é a sintaxe:

A diferença se tornará mais perceptível com conjuntos de dados maiores, como o código abaixo demonstra:


Resumo

O mapeamento coroplético bivariado é um método simples, mas subutilizado, para exibir informações geográficas de saúde para uso na tomada de decisões de saúde pública. Estudos anteriores recomendaram esta abordagem para o planejamento estadual abrangente de controle do câncer e esforços semelhantes. Neste método, 2 variáveis ​​de nível de área de interesse são mapeadas simultaneamente, geralmente como quantis sobrepostos ou usando outros métodos de classificação. As variáveis ​​a serem mapeadas podem incluir medidas em nível de área (por exemplo, nível municipal) de carga de doença, uso de cuidados de saúde, acesso a serviços de saúde e características sociodemográficas. Demonstramos como o software de sistemas de informação geográfica, especificamente ArcGIS, pode ser usado para desenvolver mapas coropléticos bivariados para informar a alocação de recursos e intervenções de saúde pública. Usamos 2 tipos de dados de saúde pública em nível de condado: Carolina do Sul e rsquos Behavioral Risk Factor Surveillance System, estimativas de já ter recebido rastreamento de câncer cervical e uma medida de disponibilidade de provedores de rastreamento de câncer cervical que fazem parte da Detecção precoce de câncer cervical e mamário da Carolina do Sul Programa. A identificação de condados com baixas taxas de rastreamento e baixo acesso a cuidados pode ajudar a informar onde recursos adicionais devem ser alocados para melhorar o acesso e, subsequentemente, melhorar as taxas de rastreamento. Da mesma forma, identificar condados com baixas taxas de rastreamento e alto acesso a cuidados pode ajudar a informar onde as intervenções educacionais e comportamentais devem ser direcionadas para melhorar o rastreamento em áreas de alto acesso.


Terça-feira, 27 de fevereiro de 2018

R - Porque o ManageR e o rpy2 não funcionam no QGIS (1.8.0-Lisboa)?

Tenho tentado fazer com que os scripts R funcionem e o ManageR funcione no QGIS (1.8.0-Lisboa). (Windows 7). Python2.7.5. Dois problemas indicaram que R não estava funcionando no QGis.

Primeiro - quando executo um script R, não há saída na janela pop-up. Segundo - quando clico em ManageR (canto inferior direito do Qgis), ele me diz que devo instalar o rpy2 ou verificar minha instalação do rpy2.

Então, instalando (verificando rpy2). Isso por si só se revelou muito problemático. Encontrei as seguintes postagens e software de 'correção rápida':

seguiu as instruções, mas ainda sem sucesso. Infelizmente, não sou um gênio da informática. Posso seguir instruções simples, mas não consigo consertar nada sozinho. Então, pessoal. Isso é tanto um pedido quanto uma pergunta. (a) como consertar, (b) alguém está trabalhando para consertar isso?

Defina o hiperlink relativo para abrir o Windows Explorer usando Ações no QGIS

Estou me perguntando como resolver este problema que estou tendo. Estou tentando fazer uma ação no QGIS quando clico no meu recurso, o Windows Explorer exibirá a pasta para esse recurso. Eu tenho o nome da pasta na coluna de atributos e um caminho absoluto para o nível superior da pasta nas Ações.

Eu pesquisei como fazer um hiperlink no QGIS e procurei nos fóruns, mas não consegui encontrar uma boa solução para minhas perguntas. Experimentei o plugin eVis e não é a solução que procuro. Eu quero especificamente o Windows Explorer para abrir ao usar a ação em um recurso, que é definido usando o caminho relativo.

Espero que a captura de tela apareça, mas se não aparecer. Em Layer Properties - Feature | Actions, o Type é definido como Windows, o nome é Folder, a ação é registrada como: explorer C: Users Me Desktop TN Test Picture [% "Hyperlink"%]

Como obteria a ação gravada definida para um caminho relativo em vez de um caminho absoluto?

Qgis - Mostra a tabela de atributos no formulário (índice)

Estou construindo um plugin em uma nova janela com índice associado. Tenho algumas ações, por exemplo, zoom na extensão e outras e quero mostrar também a tabela de atributos.

Eu procuro e encontro ajuda aqui. Como mostrar a tabela de atributos no formulário, com este pequeno código:

Mas este código não mostra nada. Você poderia me ajudar a entender o que está errado?


1 resposta 1

Você pode, mas precisa fazer um pequeno desvio. Lembre-se de que o desvio padrão é a raiz quadrada da variância, que é muito mais fácil de trabalhar: $ s ^ 2 = frac <1> soma_^ N (x_i - bar_N) ^ 2 $

Agora suponha que calculamos a variância $ s_^ 2 $ e significa $ bar_$ baseado em N-1 amostras, e uma nova amostra $ x_N $ chega e você deseja calcular $ s_N ^ 2 $. Se você observar a diferença nas somas das diferenças quadradas usadas nas fórmulas de variância, obterá algo surpreendentemente simples:

Portanto, a variação atualizada é $ s_N ^ 2 = frac <(N-2) s_^ 2 + (x_N- bar_N) (x_N - bar_)> $

e o desvio padrão atualizado seria apenas a raiz quadrada. Se você quiser a variância ou o desvio padrão da população, substitua N-1 por N e N-2 por N-1.


2 respostas 2

Seu método original de atribuição está falhando por pelo menos dois motivos.

1) Um problema com a atribuição subscrita df $ major [df $ degree1 == "BA"] & lt-. Usar == pode produzir NA, que é o que causou o erro. De? "[& Lt-": "Ao substituir (ou seja, usar indexação no lhs de uma atribuição), NA não seleciona nenhum elemento a ser substituído. Como há ambigüidade quanto a se um elemento do rhs deve ser usado ou não , isso só é permitido se o valor de rhs for de comprimento um (então as duas interpretações teriam o mesmo resultado). " Há muitas maneiras de contornar isso, mas prefiro usar:

A diferença é que == retorna VERDADEIRO, FALSO e NA, enquanto que retorna os índices de um objeto que são VERDADEIROS

2) Quando você executa uma atribuição subscrita, o lado direito precisa se encaixar no lado esquerdo de forma sensata (é assim que eu penso). Isso pode significar os lados esquerdo e direito de igual comprimento, que é o que seu exemplo parece sugerir. Portanto, você também precisaria subdividir o lado direito da atribuição:

Espero que isso esclareça por que sua tentativa original produziu um erro.

Usar ifelse, conforme sugerido por @DavidRobinson, é uma boa maneira de fazer esse tipo de atribuição. Minha opinião sobre isso:

Dependendo da profundidade das instruções ifelse aninhadas, outra abordagem pode ser melhor para seus dados reais.

Eu ia escrever um terceiro motivo para a falha do código original (ou seja, df $ major ainda não foi atribuído), mas funciona para mim sem ter que fazer isso. Este foi um problema que eu me lembro de ter tido no passado, no entanto. Qual versão do R você está executando? (2.15.0 para mim.) Esta etapa não é necessária se você usar a abordagem ifelse (). Sua solução é boa ao usar [, embora eu tivesse escolhido


Usando uma área de medidor distrital (zona), calculando a perda de água e exibindo os resultados

Estou tentando configurar um mapa no AGOL com DMA (zonas) para poder calcular a perda de água nessas áreas e exibi-lo. Nossa configuração básica é que temos cada um de nossos medidores GPS e essa informação é atualizada mensalmente para AGOL para refletir o novo consumo na tabela de atributos. Nossos medidores são simbolizados com cores diferentes para mostrar em qual zona aquele medidor específico reside. Os medidores Master / Zona também são codificados por cores para distingui-los facilmente dos medidores do cliente. Também criei uma camada para poder desenhar polígonos que representam cada uma das zonas onde temos nossos medidores. Em seguida, uso "Análise" para executar a ferramenta de agregação, que totaliza o campo "consumo" na tabela de atributos para cada medidor de cada zona. Funciona muito bem se você estiver olhando apenas para zonas independentes umas das outras. Mas há casos em que temos uma zona a jusante de outra. Portanto, você tem dois medidores mestre / zona para enfrentar no somatório do campo "Consumo".

A foto a seguir é meio difícil de ver, mas ilustra meu problema. Tenho a Zona 1 em magenta e a Zona 2 em verde. Os medidores mestre / zona são os medidores com as cruzes amarelas onde denotei Medidor 1 e Medidor 2. Se eu quisesse calcular a perda de água na Zona 2, isso seria bastante simples visualmente. Some o consumo de todos os medidores na Zona 2, subtraia do Medidor Mestre / Zona 2 e eu tenho minha perda. Para usar a ferramenta de agregação, atribuí ao medidor mestre / zona um valor negativo. Isso funcionou muito bem se as zonas não estivessem conectadas de qualquer maneira. Mas agora estou tentando determinar a perda de água na Zona 1 (magenta) e tenho o problema de dois medidores mestre / zona. O negativo no cálculo agregado não funcionará mais. De alguma forma, preciso subtrair o consumo do medidor 2 do medidor 1. Inicialmente, incluí o medidor 2 na zona do medidor 1, mas, novamente, o negativo agora me machuca em vez de ajudar. Alguém tem alguma sugestão ou ideia de como posso fazer isso?

por MartinPflanz

Você está embarcando em um quebra-cabeça numérico sutilmente complexo e divertido para resolver. Pode ser útil levar em consideração os detalhes das variáveis ​​em jogo na rede de água ao resolver uma incógnita, como a perda de água.

  • Dados do medidor do cliente - inspecione a duração durante a qual é calculada a média do fluxo medido. Volume através do medidor dividido pelo número total de dias / horas / minutos. ou seja, 200 galões por dia ou 6000 gal / mês não se traduz em uma realidade de 8 galões usados ​​a uma taxa constante a cada hora todos os dias, mas sim algum pico (ver curva diurna) ocorreu durante cada dia único. Para melhorar a precisão aqui, seria necessário ler o medidor instantâneo em todos os medidores para ter um bom controle do que foi realmente "medido" em um determinado momento.
  • Dados do medidor mestre - mesma abordagem que acima, instantâneo vs. médio, então sabendo, uma vez que a água é incompressível, a medição lê os tempos do medidor mestre alinhado com os medidores do cliente? Além disso, durante o período de dados de amostra do medidor mestre, ocorreram quaisquer incógnitas sobre a demanda de água? O departamento de água estava dando descarga em algum hidrante? O corpo de bombeiros estava combatendo um incêndio? Um empreiteiro estava retirando água para encher um caminhão-tanque por meio de um medidor de construção? Havia algum sistema de irrigação não medido de uma cidade / município que estava ativado na época? (estes podem contribuir para a perda geral de água inadvertidamente)
  • Decifrando os tipos de fontes de perda de água - a perda de água ou água desconhecida não medida pode ser o resultado de vários fatores: imprecisão do medidor (+/- 5% dependendo dos medidores, cada medidor pode ter uma idade ou precisão diferente, vazamentos tradicionais através de rachaduras nos canos, torneiras ilegais, vazamento através de uma válvula que não está totalmente encaixada, fluxo contínuo muito baixo através de um medidor (também conhecido como pequeno vazamento de vaso sanitário) AWWA M36 AUDITORIAS DE ÁGUA E PROGRAMAS DE CONTROLE DE PERDA, QUARTA EDIÇÃO é uma grande referência sobre perda de água.
  • Comportamento de Vazamento - um vazamento através de uma rachadura de tubo, está em seu comportamento básico, apenas água saindo de um orifício que felizmente tem uma equação definida (busca equação de perda de orifício de saída de fluido). Para resolver o fluxo que sai de um orifício, é necessária pressão (que varia de acordo com onde e quando na rede), bem como tamanho e tipo do próprio orifício. Então, você pode ver que pode ser necessário fazer algumas suposições com base na pressão em cada ponto da rede e no tamanho do vazamento para medir a perda de água (assumindo que outras imprecisões, como precisão do medidor e interconexões com o sistema foram retiradas a imagem). Resuma isso pensando que, à medida que a pressão aumenta, a vazão de perda de água aumenta até um limite em que o orifício se torna um gargalo.
  • Localização do vazamento e quantificação - se o delta instantâneo entre o medidor mestre e todos os medidores do cliente for conhecido, e assumindo que a diferença está relacionada apenas à perda de água por meio de uma ou mais rachaduras em um tubo (não por outros motivos), o número de vazamentos e a localização dos vazamentos permaneceria desconhecida sem uma investigação mais aprofundada (dispositivos sônicos, etc., brinquedos divertidos ver em ação!)
  • Interconexões - as interconexões não medidas na rede, tais como tees ou válvulas abertas entre as áreas medidas, criam um caminho onde a água não medida pode fluir para dentro ou para fora dessa rede, tornando todo o esforço para se concentrar em melhorar a precisão de qualquer uma das variáveis ​​acima para não

Com todas essas variáveis ​​em jogo, pode acabar sendo uma tarefa complexa de calcular manualmente. Tenho visto muitas concessionárias de água ganharem compreensão de suas perdas de água investindo tempo em um modelo hidráulico bem calibrado. O ideal é chegar a um modelo que, executado por um longo período de tempo, corresponda muito bem às condições reais da palavra. Nesse ponto, alguns dos softwares de modelagem hidráulica de hoje, dadas as variáveis ​​conhecidas suficientes, podem solucionar as regiões de vazamento plausíveis e potenciais. Lembre-se de que até mesmo os resultados do modelo hidráulico podem ter muitos cenários únicos plausíveis que podem corresponder matematicamente à pressão observada e à taxa de fluxo (ou seja, são 2 grandes vazamentos ou 6 vazamentos menores próximos).

Normalmente, tenho visto concessionárias de água mais eficazes quando lidam com a perda de água por meio de uma combinação de abordagens:

  • Programas de operação de válvula pró-ativa (para melhorar a resiliência quando ocorrem vazamentos e minimizar o tempo de inatividade / perda de água)
  • Programas proativos de educação sobre perda de água com o público (detectar um vazamento - & gt relatar um vazamento)
  • Programas de substituição de medidores (para melhorar a precisão nos próprios pontos de entrega do cliente)
  • Usando um modelo hidráulico bem calibrado para prever com segurança o comportamento do sistema e identificar áreas para investigar

A Esri tem muitas soluções bem definidas para dar suporte às operações de campo, então eu encorajo você a verificar a página GIS for Water Utilities e rolar para baixo até a seção Business Solutions e conferir.

Agradeço a resposta. Estou muito familiarizado com os itens que você descreveu acima. Minha pergunta é mais sobre como usar as ferramentas em "Análise" para atingir meu objetivo. No meu caso, a perda de água não é uma incógnita. Eu sei o que passou no medidor mestre e o que vendemos no medidor de cada cliente dentro da zona. Estou procurando uma maneira fácil de aproveitar o AGOL para exibir a perda de água como uma porcentagem em cada zona. Para conseguir isso, preciso fazer o cálculo que descrevi acima. Estou tentando tornar esse processo o mais simples possível para que as pessoas em meu escritório possam simplesmente "atualizar" a camada de "consumo" usando um arquivo .csv e, em seguida, executar a análise. Esse mapa ou informação, geralmente mostrado como uma porcentagem, seria exibido em sinal digital (grande TV LCD) dentro de nosso escritório para chamar a atenção para áreas com altos níveis de perda.

Oi Travis! Projeto legal - Gosto da ideia de ter o painel de perda de água do DMA exibido em uma TV do seu escritório.

Você mencionou que "atribuiu ao medidor principal / zona um valor negativo". Não tenho certeza se você está fazendo isso manualmente ao inserir os novos dados a cada mês, ou se está usando algum tipo de expressão para seus cálculos. Parece que o que você deseja fazer seria possível usando expressões do Arcade para calcular novos campos em sua camada de feição. Então, você pode tratar o valor do medidor 2 como positivo ou negativo, dependendo do DMA que estiver calculando.

Se você não está familiarizado com o cálculo de novos campos de serviço de recurso usando o Arcade, consulte esta postagem do blog: Criar cálculos de campo personalizados usando expressões do Arcade

Quando seus colegas de trabalho carregam os novos valores de consumo .csv, você pode simplesmente fazer com que eles criem um novo campo (s) para o mês e executem suas expressões do Arcade salvas para calcular os campos antes de executarem a análise.

PS: Se seus dados forem locais, por exemplo, no ArcGIS Enterprise, você provavelmente poderia criar uma ferramenta Python personalizada para executar todos esses cálculos localmente e apenas ter seu serviço de recurso federado publicado no Painel de DMA para exibir os resultados. Isso pode ser mais simples para seus colegas de trabalho seguirem - todas as etapas contidas em uma única ferramenta personalizada.

Obrigado pela contribuição Joe, eu realmente aprecio isso. Estou tentando fazer isso há algum tempo e, conforme novas ferramentas e funcionalidades evoluem com o AGOL, mais perto eu chego. Tenho certeza de que alguém muito mais experiente do que eu poderia facilmente ter feito isso anos atrás, mas quero tentar aprender mais sobre isso e ver onde isso dá. Não tenho muito tempo para me dedicar a isso no trabalho, mas acho que o AGOL é incrível no que pode fazer.


Fortalecimento dos métodos de ciência de dados para missões de prontidão e pessoal do Departamento de Defesa (2017)

Os dados aplicáveis ​​ao pessoal e às decisões de prontidão estão aumentando rapidamente, assim como o potencial para tomar decisões significativas aprimoradas por informações anteriormente inacessíveis. Automação de rastreamento, o aumento de novos tipos de dados (por exemplo, mídia social, áudio, vídeo), armazenamento aprimorado de registros eletrônicos, reaproveitamento de registros administrativos e a explosão de dados de modelagem aumentaram a disponibilidade de dados. No entanto, fazer uso total desses dados requer não apenas armazenamento e gerenciamento adequados (Dasu e Johnson, 2003 Wickham, 2014), mas também recursos analíticos avançados.

Este relatório considera a ciência de dados em seu sentido mais amplo, como um campo multidisciplinar que lida com tecnologias, processos e sistemas para extrair conhecimento e visão dos dados e apoiar o raciocínio e a tomada de decisão sob várias fontes de incerteza. Aqui, dois aspectos da ciência de dados são de interesse: (1) o gerenciamento e processamento de dados e (2) os métodos analíticos e teorias para análise descritiva e preditiva e para análise prescritiva e otimização. O primeiro aspecto envolve sistemas de dados e sua preparação, incluindo bancos de dados e armazenamento, limpeza e engenharia de dados e monitoramento, relatórios e visualização de dados. O segundo aspecto envolve análise de dados e inclui mineração de dados, análise de texto, aprendizagem estatística e de máquina, teoria da probabilidade, otimização matemática e visualização.

Este capítulo discute alguns dos métodos e práticas de ciência de dados sendo empregados em vários domínios que pertencem às capacidades de análise relacionadas a pessoal e missões de prontidão no Departamento de Defesa

(DoD). Muitos desses métodos são bem conhecidos do pessoal e da comunidade de prontidão. Algumas das considerações importantes discutidas incluem como métodos analíticos descritivos e preditivos podem ser usados ​​para entender melhor o que os dados indicam como a tomada de decisão sob incerteza pode ser aprimorada por meio de análises prescritivas e a utilidade e limitações dessas abordagens.

A proliferação de dados e avanços técnicos nos métodos de ciência de dados criaram enormes oportunidades para aprimorar esses recursos de análise. Esta seção enfoca os métodos de ciência de dados, incluindo aqueles associados à preparação de dados e análises descritivas, preditivas e prescritivas, fornecendo assim alguns dos detalhes técnicos e base para os métodos de ciência de dados que serão referenciados nos capítulos subsequentes. A Figura 4.1 ilustra a evolução típica das fontes de dados aos resultados da análise. Este capítulo não discute as considerações necessárias para toda a modelagem (por exemplo, para evitar overfitting de dados e para avaliar a estabilidade em termos de validação cruzada), mas oferece uma lista não exaustiva de métodos para introduzir algumas abordagens importantes relevantes para as missões do Escritório do Subsecretário de Defesa (Pessoal e Prontidão), referido ao longo do relatório como P & ampR. Muitos desses métodos são bem conhecidos por pesquisadores da comunidade de pessoal e de prontidão e são discutidos apenas superficialmente, enquanto outros que o comitê acredita não serem amplamente usados ​​foram explicados em mais detalhes. Este capítulo discute apenas os métodos, enquanto o Capítulo 7 fornece alguns exemplos de como os métodos podem ser aplicados a áreas de missão P&R.

O aumento no volume de dados não leva, por si só, a melhores resultados. Existem desafios associados ao armazenamento, indexação, vinculação e consulta de grandes bancos de dados, mas talvez o desafio mais significativo seja fazer inferências e decisões significativas a partir da análise dos dados. Conforme discutido no relatório do Conselho Nacional de Pesquisa de 2013 Fronteiras na análise massiva de dados, & ldquo A inferência é o problema de transformar dados em conhecimento, onde o conhecimento muitas vezes é expresso em termos de entidades que não estão presentes nos dados em si, mas estão presentes em modelos usados ​​para interpretar os dados & rdquo (NRC, 2013, p. 3) . Ao desenhar uma inferência significativa, questões como viés de amostragem (onde uma amostra é coletada de tal forma que alguns membros da população pretendida são menos prováveis ​​de serem incluídos do que outros), proveniência (onde as camadas de inferência são compostas, obscurecendo o original dados) e taxas de erro de composição (onde várias hipóteses são consideradas ao mesmo tempo), todas desempenham um papel na obtenção de resultados de qualidade (NRC, 2013). É claro que isso pressupõe que as técnicas estatísticas e de tomada de decisão estão sendo aplicadas de forma adequada e que os resultados são reproduzíveis (NASEM, 2016).

A seção seguinte sobre preparação de dados discute tarefas e métodos comuns de preparação de dados, enquanto a seção subsequente sobre análise de dados discute análise descritiva e exploratória, análise preditiva e análise prescritiva.


Como usar valores de linhas anteriores ou seguintes em uma consulta do SQL Server

1 11

Recentemente, encontrei um problema que exigia a execução de um cálculo em uma consulta que envolvia um valor na linha atual e um valor na linha anterior. O problema é que as consultas SQL executam operações linha por linha, acessando dados em linhas diferentes ao mesmo tempo, requer que a consulta faça algum trabalho extra.

Nas versões do SQL Server anteriores a 2012, você precisa realizar uma junção usando um enumerador de linha para combinar as linhas com as linhas anteriores ou seguintes. A partir de 2012, existem duas funções, Lag () e Lead (), que simplificam muito o processo.

Descreverei o problema que encontrei e mostrarei como implementar uma solução usando as versões 2005 e # 8211 2008 R2 do SQL Server e o SQL Server 2012.

Configure os dados

Antes de chegar ao problema, aqui está um script que você pode executar para configurar um ambiente para este exemplo, caso queira continuar fazendo. O script cria um banco de dados chamado UserManagement e, em seguida, cria e preenche uma tabela chamada UserActivity. Quando terminar este artigo, você pode simplesmente descartar o banco de dados UserManagement para limpar as coisas.

O problema

Para entender o problema, vamos dar uma olhada na tabela UserActivity depois de executar o script acima. Observe que cada linha é uma atividade de logon ou logoff e que, quando mostrada em ordem por usuário e tempo de atividade, é logon, logoff, logon, logoff e assim por diante.

A partir dessa tabela, precisamos calcular o tempo ocioso por usuário por dia - o tempo entre um logon e o logoff anterior do mesmo usuário no mesmo dia. Reserve um momento para verificar se, para o usuário 1 em 01/01/2013 (as primeiras 6 linhas da tabela UserActivity), há dois blocos de tempo ocioso, um é de 10:45 a 1:15 (2 ½ h., ou 150 min.), e o outro é de 3:30 a 4:15 (45 min). Observe que blocos de tempo ocioso que duram dois dias não serão usados.

Para calcular o tempo ocioso, precisamos encontrar a diferença entre o tempo em uma linha de logon e o tempo no anterior fileira. Esse é o obstáculo a ser superado, aqui. Lembre-se de que as consultas SQL executam operações linha por linha. Esse negócio de acessar as linhas anteriores ou seguintes requer algumas pequenas acrobacias no SQL Server 2008 R2 e nas versões anteriores. Vamos ver como fazer.

Uma solução usando SQLServer 2005, 2008 ou 2008 R2

Começaremos criando duas tabelas derivadas - uma contendo apenas as linhas de logon em UserActivity e a outra contendo apenas as linhas de logoff. Vamos chamá-los de LogOns e LogOffs.

Em seguida, precisaremos juntá-los para que uma linha de logon seja pareada com sua linha de logoff. Para combinar uma linha com sua linha anterior, podemos enumerar as linhas da tabela UserActivity e incluir essa enumeração nas duas tabelas derivadas (as linhas em LogOn terão todos números de linhas ímpares e as linhas em LogOff terão todos números de linhas pares). Podemos então entrar na linha x em LogOn para linha x-1 em LogOff.

Para garantir que as linhas correspondentes sejam para o mesmo usuário e data de atividade, também incluiremos esses dois campos na condição de junção quando escrevermos a consulta.

Para implementar esta solução, usaremos a função Row_Number (), a cláusula OVER () de uma instrução SELECT, uma CTE e uma junção interna. Vou mostrar a você a consulta agora e, em seguida, discuti-la em detalhes abaixo.

  1. Encontre um CTE chamado UserActivityWRowNum na consulta. Esta é apenas a tabela UserActivity com uma coluna Row_Number () adicional - a enumeração de que precisamos em ordem por User e ActivityTime. A função Row_Number () enumera as linhas na ordem especificada na cláusula ORDER BY na cláusula OVER (). Aqui estão os dados produzidos pela CTE com sua coluna RowNumber:
  2. O CTE é usado na consulta principal para criar as duas tabelas derivadas, LogOns e LogOffs.
  3. A condição de associação corresponde à hora de logon com a hora do logoff anterior, desde que o usuário e a data da atividade sejam os mesmos.

Quando executamos a consulta, podemos ver os mesmos dois blocos de tempo ocioso para o usuário 1 em 01/01/2013 que vimos no início:

É assim que você pode fazer no SQL Server 2005, 2008 ou 2008 R2. Se você estiver usando o SQL Server 2012 ou superior, é um pouco mais fácil.

Uma solução usando SQLServer 2012 ou superior

O SQL Server 2012 introduziu as novas funções Lag () e Lead () que encapsulam toda a lógica de “alcançar” para trás ou para frente, respectivamente, por qualquer número de linhas. Precisamos apenas dizer qual valor recuperar de uma linha anterior (uma coluna ou uma expressão que faz referência a uma ou mais colunas), quantas linhas para voltar ou avançar, e a ordem das linhas ou a "escala" sobre o qual ele sabe o que é uma linha “anterior” ou “próxima”. Usamos parâmetros para informar os dois primeiros. A ordem das linhas é especificada usando a cláusula OVER () com ORDER BY.

Na consulta abaixo, a função Lag () é usada para determinar o tempo ocioso. É o segundo argumento da função DATEDIFF (). Estamos instruindo a função Lag () a recuperar o tempo de atividade de 1 linha “de volta” usando a mesma ordem de User e ActivityTime (a função Lead () é semelhante, mas retorna valores nas linhas que seguem em vez de preceder a linha atual) . Observe os mesmos blocos de tempo ocioso de 150 minutos e 45 minutos para o usuário 1 em 01/01/2013.


WO2007143157A2 - Geração automática de peso para correspondência probabilística - Patentes do Google

isto é, remova os registros de identidade existentes e os substitua por um único registro de identidade ligando os registros de dados de entrada com todos os registros de dados retornados na etapa 212. Após uma das etapas 224, 226 e 228 serem realizadas, o processamento da correspondência / a operação de link foi concluída. Agora, será descrito um método para adicionar uma regra de identidade de acordo com a invenção. FIGO. 10 é um fluxograma que ilustra um método 240 para adicionar uma regra de identidade ao banco de dados de regras do MEI de acordo com a invenção. Na etapa 242, o MEI pode receber dois identificadores de registro de dados, l.subtext.1 e I. subtext.2. Neste exemplo, a regra de identidade é I. subtext.1 = l. subtext.2 que significa que esses dois registros de dados contêm informações sobre a mesma entidade. O MEI pode então determinar se os dois identificadores se referem a registros únicos separados na etapa 244 e uma rotina de exceção pode ser executada na etapa 246 se ocorrer uma exceção. Se não houver exceção, o MEI determina se a nova regra de identidade é consistente com as regras já contidas no banco de dados de regras na etapa 248. Se houver uma exceção, como o banco de dados de regras tem uma regra de não identidade que especifica que I . subtext.1 e I. subtext.2 não estão associados um ao outro, uma rotina de exceção é executada na etapa 250. Se a nova regra de identidade for consistente com as outras regras no banco de dados de regras, então o identificador de entidade contendo os dois dados os registros são sintetizados na etapa 250 para determinar se há alguma inconsistência nas associações do identificador de duas entidades, conforme mostrado na etapa 252. Se houver alguma inconsistência no identificador de entidade, uma rotina de tratamento de exceção é executada na etapa 254. identificador de entidade contendo os dois registros de dados são mesclados na etapa 256 e o ​​método é concluído. Agora, será descrito um método para adicionar uma regra de não identidade ao banco de dados de regras de acordo com a invenção.

UI)) determinado na etapa 610 e uma segunda probabilidade (P (

| M)) determinado na etapa 612 de modo que W, = logn(P (

| U)). Isso é feito para cada atributo antes de iniciar o processo de iteração descrito abaixo.


Assista o vídeo: Layer files in ArcGIS Pro