example - Motor JSON de nombre de libra SAS-API de Twitter
twitter json (1)
Me gustaría utilizar el motor JSON de nombre de libra SAS en lugar de PROC GROOVY para importar el archivo JSON que obtengo de la API de Twitter. Estoy ejecutando SAS 9.4M4 en OpenSuse LEAP 42.3.
Seguí la descripción de Falko Schulz sobre cómo acceder a la API de Twitter y todo salió bien. Hasta el punto en el que quería importar el archivo JSON en SAS. Entonces, la última línea de código de trabajo es:
proc http method="get"
out=res headerin=hdrin
url="https://api.twitter.com/1.1/search/tweets.json?q=&TWEET_QUERY.%nrstr(&)count=1"
ct="application/x-www-form-urlencoded;charset=UTF-8";
run;
que produce un archivo json en el archivo al que se hace referencia con el nombre de archivo "res".
Falko Schulz usa PROC GROOVY. Sin embargo, en SAS 9.4M4, existe este misterioso motor de nombres de nombres JSON que hace la vida más fácil. Y funciona para archivos JSON simples. Pero no para los datos de Twitter. Así que tener los datos JSON de Twitter descargados, usando
libname test JSON filref=res;
me da el siguiente error:
Invalid JSON en la entrada cerca de la línea 1 columna 751: algunos puntos de código no se transcodificaron.
Sospeché que algo anda mal con la codificación de los archivos, así que utilicé una declaración de nombre de archivo del formulario:
filename res TEMP encoding="utf-8";
sin suerte ...
También traté de aumentar la longitud de registro
filename res TEMP encoding="utf-8" lrecl=1000000;
y jugaste con el formato de registro ... en vano ...
¿Alguien puede ayudar? ¿Qué me estoy perdiendo? ¿Cómo puedo usar el motor JSON en una declaración LIBNAME sin correr este error?
Ejecute su sesión SAS en modo UTF-8, si está ingresando archivos UTF-8 en datasets SAS. Si bien es posible ejecutar SAS en otro modo y aún leer archivos codificados en UTF-8 hasta cierto punto, generalmente tendrá muchas dificultades.
Puedes decir con qué codificación está tu sesión con este código:
proc options option=encoding;
run;
Si devuelve esto:
ENCODING=WLATIN1 Specifies the default character-set encoding for the SAS session.
Entonces no estás en la codificación UTF-8.
SAS 9.4 y posteriores en el escritorio generalmente se instalan con la opción UTF-8 seleccionada automáticamente además del WLATIN1 predeterminado (cuando está instalado en inglés, de todos modos). Puede encontrarlo en el menú de inicio bajo SAS 9.4 (Unicode Support)
, o usando el archivo sasv9.cfg en la subcarpeta 9.4/nls/u8/
de su carpeta SAS Foundation. Otras versiones anteriores también pueden tener esa subcarpeta / idioma instalado, pero no siempre fue el predeterminado tenerlo instalado.