Je fais face à des données sensibles, donc je suis préoccupé par l'utilisation de RPostgreSQL. J'ai toutes les données nécessaires chargées dans les données dans R. J'essaie d'exécuter des requêtes sur les données en utilisant la fonction sqldf()
dans R. Ces requêtes ont été écrites pour Oracle SQL Developer il y a des années, donc nous essayons d'éviter de réécrire les scripts entièrement. Pouvoir réutiliser les scripts SQL pré-écrits nous permettra d'économiser énormément de temps. Le script semble se déclencher lorsque nous atteignons la fonction SQL over()
. Je suis conscient que base sqldf ne supporte pas la fonction over()
. J'ai lu que la fonction over()
fonctionne avec le paquetage RPostgreSQL, mais est-ce que cela nécessite que je envoie mes données vers une base de données externe? D'après ma compréhension de RpostgreSQL, vous devez vous connecter à PostgreSQL et créer une nouvelle base de données. Nous ne pouvons pas envoyer ces données à un système de stockage de données externe. Existe-t-il un autre moyen d'utiliser la fonction over()
tout en conservant les données locales sur mon PC?OVER() fonction dans R en utilisant sqldf sans RPostgreSQL?
select program, importance_level, count(distinct subject_id)
from
(
select r.subject_id,
case
when rc_level is not null and rc_level <> 'NA'
then 'bad_guy'
when (rc_level is null or rc_level = 'NA') and
(substr(r.base_category, 2, 2) in ('5R', '8Q', '8P')
or r.process_name in ('On The Way'))
then 'run_away'
when (rc_level is null or rc_level = 'NA') and r.process_name =
'Fancy Order'
then 'repeater'
when (rc_level is null or rc_level = 'NA') and
(a.current_program_code in ('BOP', 'IAS', 'LIS', 'SIS')
or method_code in ('SIP', 'POB')
or substr(r.base_category, 2, 2) in ('9F', '7G'))
then 'NEWBIE'
else 'Other'
end
as importance_level,
case
when a.current_program_code in ('123', 'ABC', 'DEF', 'HIJ', 'KLM', 'NOP', 'QRS') then 'YAW'
when a.current_program_code in ('RE', 'FDS', 'QWE', 'WER', 'ERT','RTY','TYU') then 'PO'
when a.current_program_code in ('LEP') then 'MOM'
else a.current_program_code
end
as program
from FY16DATA r left join (select distinct * from (select subject_id, first_value(current_program_code) over (partition by subject_id order by start_date desc) as current_program_code, first_value(process_name) over (partition by subject_id order by start_date desc) as process_name, first_value(method_code) over (partition by subject_id order by start_date desc) as method_code, max(load_fy) over (partition by subject_id) as load_fy from FY16NAME)) a on r.subject_id = a.subject_id
where r.load_fy = '2016' and r.thing_status <> 'Over' and r.thing_status in ('Head','Hair','Face')
)
group by program, importance_level;
Je ne suis pas autorisé à télécharger et installer le logiciel sur cette machine sans longue haleine processus d'approbation. Je ne pense pas que je serai en mesure de télécharger une version locale de PostgreSQL. Existe-t-il un autre moyen de forcer RPostgreSQL à charger à partir de la mémoire R? – MakoEyedSoldier
'RPostgreSQL' est simplement un moyen de connecter R à une installation de postgreSQL. C'est juste la connexion. Si vous n'avez pas d'installation locale de PostgreSQL, vous n'avez rien à vous connecter. – Gregor