我想知道是否有一种检测数据集是否为空的方法,即它没有观察结果.或者在另一种说法中,如何获得特定数据集中的观察数量.
这样我就可以编写一个If语句来设置一些条件.
谢谢.
免责声明:我是neo4j的初学者.我已经完成了教程.我已经构建了我的数据,并将其加载到graphdb中,我正在尝试验证它是否正确导入.
我不确定我遇到的问题是我在导入或密码查询中所做的事情.
我正在使用此导入工具导入以下文件(以下文件已经过滤,只包含我正在调查的行):
application_id节点文件:
application_id:ID(application_id),:LABEL
2036983247,application_id
2037028183,application_id
Run Code Online (Sandbox Code Playgroud)
personal_phone节点文件:
personal_phone:ID(personal_phone),:LABEL
5555551234,personal_phone
Run Code Online (Sandbox Code Playgroud)
关系文件:
:START_ID(personal_phone),:END_ID(application_id),:TYPE
5555551234,2036983247,APPLIED
5555551234,2037028183,APPLIED
Run Code Online (Sandbox Code Playgroud)
我的密码查询:
match p= (a {personal_phone:'5555551234'}) -->(b) return p
Run Code Online (Sandbox Code Playgroud)
在我的结果中,我看到personal_phone节点与每个application_id节点有2个"APPLIED"关系.我希望只看到一个.我哪里错了?
编辑:这就是我所看到的.中心节点是personal_phone
节点.
编辑2: 所以我发现使用dump
neo4j shell中的语句我可以获得数据库的导出.我想我会为有问题的节点运行它:
$ dump match p= (a personal_phone:'5555551234'})-->(b) return p;
Run Code Online (Sandbox Code Playgroud)
返回:
begin
create (_5:`application_id` {`application_id`:"2036983247"})
create (_410:`application_id` {`application_id`:"2037028183"})
create (_6928:`personal_phone` {`personal_phone`:"5555551234"})
create _6928-[:`APPLIED`]->_410
create _6928-[:`APPLIED`]->_5
create _6928-[:`APPLIED`]->_410
create _6928-[:`APPLIED`]->_5
;
commit
Run Code Online (Sandbox Code Playgroud)
这表明我肯定有重复的关系.关于如何解决这个问题的任何想法?
当我尝试使用临时共享访问签名 (SAS) 创建/访问 Azure blob 时,我收到“远程服务器返回错误:(403) 禁止”。错误。有人可以帮我确定这段代码出了什么问题吗?
// Calling this function from Main().
public void uploadToBlob()
{
string content = "Hello World - Content of the file";
string fileName = "TestFile";
UploadFileToAzureBlobStorage(content, fileName);
}
void UploadFileToAzureBlobStorage(string content, string fileName)
{
string storageKey = "SAS Key";
string storageAccount = "Storage Account name";
string containerName = "Container Name";
string blobName = fileName;
string method = "PUT";
string sampleContent = content;
int contentLength = Encoding.UTF8.GetByteCount(sampleContent);
string requestUri = $"https://{storageAccount}.blob.core.windows.net/{containerName}/{blobName}";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); …
Run Code Online (Sandbox Code Playgroud) 我们希望从SAS代码中的ODBC连接字符串中删除硬编码的密码,并且还希望避免任何密码出现在SAS日志文件中。
似乎有很多白皮书讨论如何解决此问题,但是我要么发现它们有问题,要么无法使其工作。
每次提示用户输入PW都不可行。同样,将密码存储在宏变量中也是可以接受的方法,只要您有一种方法可以在打开MACROGEN和SYMBOLGEN选项的情况下禁止将其打印到日志中。
尝试1-编码(在此处链接至白皮书)
proc pwencode in='mypassword' method=sasenc;
run;
Run Code Online (Sandbox Code Playgroud)
给出:
{sasenc}ACFD24061BF77D7D5362EE7C2D00D08B
Run Code Online (Sandbox Code Playgroud)
如果我将我的纯文本密码替换为代码中的编码值,则ODBC passthrough语句可以正常运行。
proc sql noprint;
connect to odbc as remote (datasrc=cmg_report user=myuser password='{sasenc}68B279564BD2695538CDCDB301E8A357563480B0');
create table sqlo as
select *
from connection to remote
(
select top 1 * from application
)
;
disconnect from remote;
quit;
Run Code Online (Sandbox Code Playgroud)
并且日志正确掩盖了带有XXXXXXX的值。
961 proc sql noprint;
962 connect to odbc as remote (datasrc=cmg_report user=&user_cmg password=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX);
963 create table sqlo as
964 select *
965 from connection to remote
966 (
967 …
Run Code Online (Sandbox Code Playgroud) 我想在Windows中从SAS中创建目录结构。最好使用一种允许我指定UNC命名约定的方法,例如:
\\computername\downloads\x\y\z
Run Code Online (Sandbox Code Playgroud)
我在网上看到了许多使用SAS mkdir
命令通过%sysexec()
或命令调用SAS的示例x
。mkdir命令的好处是,如果中间文件夹也不存在,它将创建任何中间文件夹。我从提示符处成功测试了以下命令,它的行为与预期的一样(引号似乎无关紧要,因为我的路径名中没有空格):
mkdir \\computername\downloads\x\y\z
mkdir d:\y
mkdir d:\y\y
mkdir "d:\z"
mkdir "d:\z\z"
mkdir \\computername\downloads\z\z\z
mkdir "\\computername\downloads\z\z\z"
Run Code Online (Sandbox Code Playgroud)
从SAS可以正常运行以下命令:
x mkdir d:\x;
x 'mkdir d:\y';
x 'mkdir "d:\z"';
x mkdir \\computername\downloads\x;
x 'mkdir \\computername\downloads\y';
Run Code Online (Sandbox Code Playgroud)
但是当从SAS运行时,这些命令不起作用,例如:
x mkdir d:\x\x;
x 'mkdir d:\y\y';
x 'mkdir "d:\z\z"';
x mkdir \\computername\downloads\x\y\z ;
x 'mkdir "\\computername\downloads\z"';
** OR **;
%sysexec mkdir "\\computername\downloads\x\y\z ";
** OR **;
filename mkdir pipe "mkdir \\computername\downloads\x\y\z";
data _null_;
input mkdir;
put infile;
run;
Run Code Online (Sandbox Code Playgroud)
这是行不通的。不仅如此,即使我已options …
我有一个非常大的表,其中包含ID字段和日期时间字段.该表按ID字段排序,并在日期时间字段中按INDEXED排序.
我想快速找到最大日期时间值,但我找不到任何好的方法来做到这一点.
样本数据:
data x;
do id=1 to 10000000;
created_datetime = datetime() + (ranuni(1)*100000);
output;
end;
format created_datetime datetime22.;
run;
proc sql noprint;
create index created_datetime on x;
quit;
Run Code Online (Sandbox Code Playgroud)
尝试#1:PROC SQL
和max()
功能
出于某种原因,我认为这会立即返回结果,但我发现实际发生的事情是反直觉的(至少对我而言).使用该max()
功能不使用索引 - 它不能!where子句等可以使用索引,但max()函数不能.即使您强制使用索引,它仍然会处理表中的所有行,只是按照使用索引返回它们的顺序.
option msglevel=i;
proc sql noprint;
select max(created_datetime) from x(idxname=x);
quit;
Run Code Online (Sandbox Code Playgroud)
尝试#2:按组处理
下面使用索引轻松返回第一行:
data min;
set x;
by created_datetime;
output;
stop;
run;
Run Code Online (Sandbox Code Playgroud)
但我不能使用descending关键字在列表中向后工作以获取最后一行:
data min;
set x;
by descending created_datetime;
output;
stop;
run;
Run Code Online (Sandbox Code Playgroud)
SAS似乎也不支持降序索引,所以我也不能使用这种方法.
尝试#3:使用有关索引和WHERE
语句的元数据
我SASHELP.VINDEX
希望可能最大值可能存储在我可以在where语句中使用的元数据中.那里没有运气.
编辑: …
SAS中有一种简单的方法可以将字符串转换为可用作列名的SAS安全名称吗?
即.
Rob Penridge ----> Rob_Penridge
$*@'Blah@* ----> ____Blah__
Run Code Online (Sandbox Code Playgroud)
我正在使用a proc transpose
,然后想要在转置后使用重命名的列.
我有一个非常大的表,其中包含一个索引日期时间字段.我希望按月对数据集进行分组处理,只输出每个月的最后一次观察.
问题是它不包含月份字段,所以我不能使用这样的东西:
if last.month then do;
output;
end;
Run Code Online (Sandbox Code Playgroud)
有没有办法可以实现这种行为,而无需在以前的datastep中添加月份字段?该表是50 gig压缩,所以我想避免任何不必要的步骤.
谢谢
我有以下数据集
col1 q1 q2 q3 q4 q5
a - 2 1 2 2
b - - - - -
b 1 2 - - -
d 3 - - - -
Run Code Online (Sandbox Code Playgroud)
我想在 SAS 中应用一个条件,允许我删除所有列(q1 到 q5)为空的情况。我想看看这个:
col1 q1 q2 q3 q4 q5
a - 2 1 2 2
b 1 2 - - -
d 3 - - - -
Run Code Online (Sandbox Code Playgroud) 我想要一个代码来将列中的数字替换为字符。
例如:0-“否”1-“是”。
我尝试使用 if/else 但它不起作用!
Data Assign2.Grocery_coup_two;
Set Assign2.Grocery_coupons;
If Heath_food_Store = 0
then Health_food_Store = "No";
Else Health_food_Store = "Yes";
Run;
Health_Food_Store
0
0
0
0
1
0
1
0
0
0
1
0
1
0
0
1
Run Code Online (Sandbox Code Playgroud)