How to resolve error using Where Clause on Graph edge data? - vora

I have a simple Graph and can run the following query which brings back the NAME property of "Customer" nodes along with the NODETYPE property of edges named "SIMILAR_TO":
SELECT NAME, SIMILAR_TO.NODETYPE FROM CUSTOMER USING GRAPH
MY_CUSTOMER_PROSPECT_GRAPH;
This yields expected tabular data. Now I want to filter the edges to grab only those of a certain NODETYPE by running this SQL:
SELECT NAME, SIMILAR_TO.NODETYPE FROM CUSTOMER USING GRAPH
MY_CUSTOMER_PROSPECT_GRAPH
where SIMILAR_TO.NODETYPE = 'SIM';
But this fails with the following error:
could not handle api call, failure reason : execution of scheduler plan
failed: found problem category: exception for node id 8 - error code is 58
error msg: [ Graph Semantics ] Query parse error (code 58): unexpected
expression: (NODE_5.SIMILAR_TO.NODETYPE = 'SIM');
Similarly, you cannot use {Edge}.NODEID in the where clause either (same error). This appears to be new to version 2.1 (2.1.35 is the exact version I'm running) as I am trying to migrate existing graph models that ran correctly in previous versions. Is there a workaround for this?

Related

PowerBI subscription error : there is no data for the field at position x

We have run a PowerBI subscription to generate visualisations report in PDF format we have get many errors like this
There is no data for the field at position x
The problem is we searched many times about it we found that it may occurred due to missing data in dataset.
But we have about 30 datasets with a query to oracle database we cannot figure out which is the missing data and the log does not mention which report causes the error.
Is there a way to figure out which field is missing?
Or is there a way to enrich the reports error log to give us which report failed?
A sample of exact error is repeated with different positions :
processing!ReportServer_0-8!1e18!02/07/2022-09:56:36:: e
ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: , Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: There is no data for the field at position 29.;
Dears
I found a solution help me. I will share it.
The error is due to missing data, not missing values, which means the column name defined in the data set field has been changed in the database.
note:
When make the value equals null it will not give the same error; even if it is used in the report it will give a different error.
about how to detect ?
Simply install report builder in machine has connection to this database and open this report with report builder and make verify fields, it will give detailed error with the name of dataset fields not found so we tracked it in database we found it has been changed so fix it in either dataset or column name in database it fix the issue.
New challenge we are going to handle it either column name exist or changed to e, never get error and give empty report better as there is some database the report will connect may not have the same column names so it should give empty part of report instead of error.
thanks BR,

How do I insert a time value in Redshift in a time column?

Given the following query
ALTER TABLE public.alldatatypes ADD x_time time ;,
how do I insert a value into x_time?
Time appears to be a valid column type according to the documentation.
https://docs.aws.amazon.com/redshift/latest/dg/r_Datetime_types.html#r_Datetime_types-time
https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html
However, when I try to do an insert, I always get an error.
Insert query: insert into public.alldatatypes(x_time) values('08:00:00');
Error:
SQL Error [500310] [0A000]: Amazon Invalid operation:
Specified types or functions (one per INFO message) not supported on
Redshift tables.;
I do not want to use another column type.
I am testing all the column types defined in the documentation.
That cryptic error message is the one Redshift gives when you try to use a leader-only function as source data for a compute node. So expect you aren't showing the exact code you ran to generated this error. I know that it can seem like you didn't change anything important to the issue but you likely have.
You see select now(); works just fine but insert into <table> select now(); will give the error you are showing. This is because now() is a leader only function. However insert into <table> select getdate(); works great - this is because getdate() is a function that runs on compute nodes.
Now the following SQL runs just fine for me:
create table fred (ttt time);
insert into public.fred(ttt) values('01:23:00'); -- this is more correctly written values('01:23:00':time)
insert into public.fred(ttt) select getdate()::time;
select * from fred;
While this throws the error you are getting:
insert into public.fred(ttt) select now()::time;
So if this doesn't help clear things up please post a complete test case that demonstrates the error.

Resources Exceeded During Query Execution: Custom Dimensions & MAX(IF(...))

I'm performing what I thought was a simple events query in BigQuery with two custom dimensions. When trying to execute this query for year-to-date, I get the following error:
query: Resources exceeded during query execution. (error code:
resourcesExceeded)
Research of this error and investigation of the 'resourcesExceeded' error code indicates that this happens most frequently when using windowed functions, joins, count(distinct()) or group by each, none of which I am using here. The only thing I am doing is order by Date asc, which doesn't appear to eliminate the error when that line is removed. Since this is a shard resources issue, I think this has to be related to the two custom dimensions I'm trying to pull, since the MAX/IF function seem to be the most resource intensive portions of this query. Here's a snippet of the query I'm running:
SELECT
DATE,
userId,
fullVisitorId,
visitId,
trafficSource.source,
trafficSource.medium,
trafficSource.campaign,
trafficSource.adContent,
MAX(IF (hits.customDimensions.INDEX = 1,hits.customDimensions.value,NULL)) WITHIN RECORD AS XXXXXX,
MAX(IF (hits.customDimensions.INDEX = 2,hits.customDimensions.value,NULL)) WITHIN RECORD AS YYYYYY,
totals.visits,
totals.bounces,
totals.pageviews
FROM (
TABLE_DATE_RANGE([########.ga_sessions_],
TIMESTAMP('2016-01-01'), # start date
TIMESTAMP('2016-07-31')) # end date
)
ORDER BY DATE ASC;
I've tried this query both through the BigQuery console UI as well as from the command line. I've also set the option, 'allowLargeResults' to True.

Spring Data Neo4j find nodes by label

I am currently using SDN 4 and trys to do the following query:
#Query("MATCH (n:TNode:{0}) RETURN n")
Collection<TNode> getNodes(String type);
where each node has a common label "TNode" and an individual label type. However, it always returns syntax error. I'm sure the query is correct because it returns nodes using Neo4j web client.
Does the error occurs because SDN can not find nodes by label?
This is a limitation of Cypher, not SDN. Labels (or relationship types) as parameters are not supported. See this and related feature requests.
You can work around this using where clause and labels(n) function:
MATCH (n:TNode)
WHERE {0} in labels(n)
RETURN n
This comes with a caveat - it will go through all nodes matched by the MATCH clause. In your situation having a :TNode label might solve the issue, but generally having simple MATCH (n) would go through all nodes in the database, which will be very slow.
Other option would be to build the query manually and use org.springframework.data.neo4j.template.Neo4jOperations#queryForObjects to run the query:
String query = "MATCH (n:TNode:" + type + ") RETURN n"; // ugly, but works, beware of query injections etc..
Collection<TNode> nodes = neo4jOperations.queryForObjects(TNode.class, query, params);

JPA generating an invalid column

Helo there.
I am attempting to a execute a many-to-many get all query. To be clear, I am attepmting to get a collection within a collection to be pulled back. Ie, we will get a result set, but in that result set, there will be a collection of all objects linked to it via a foreign key. Now, to do this, I have a collection which I annotate thusly...
#ManyToMany
#JoinTable(name="QUICK_LAUNCH_DISTLIST",
joinColumns=#JoinColumn(name="QUICK_LAUNCH_ID"),
inverseJoinColumns=#JoinColumn(name="LIST_ID"))
private Collection<QuickLaunchDistlist> distributionLists;
Which seems to be just about text book...
I call a named query which looks like this...
#NamedQuery(name="getQuickLaunch", query = "SELECT q FROM QuickLaunch q")
Which is executed like so...
qlList = emf.createNamedQuery("getQuickLaunch").getResultList();
Every time I make this call, I get back the expected data in the first collection. But none of the collections seem to populate with it. To find out why, I looked at the sql being generated by the call... This is what I find...
I get this exception...
This is a FFDC log generated for the Default Resource Adapter from source:com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeQuery
The exception caught:java.sql.SQLSyntaxErrorException: ORA-00904: "T1"."QL_DISTLIST_ID": invalid identifier
SQL Error Code is 904 SQL State is :42000
Along with this query...
SELECT t1.QL_DISTLIST_ID, t2.LIST_ID, t2.CREATE_DATE, t2.CREATE_USERID, t2.description, t2.flag, t2.MOD_DATE, t2.MOD_USERID, t2.ORGANIZATION_ID, t2.owner, t2.STATUS_ID, t1.MESSAGE_TYPE_ID, t1.MOD_DATE, t1.MOD_USERID, t1.QUICK_LAUNCH_ID FROM EPCD13.QUICK_LAUNCH_DISTLIST t0, EPCD13.QUICK_LAUNCH_DISTLIST t1, EPCD13.DISTRIBUTION_LIST t2 WHERE t0.QUICK_LAUNCH_ID = ? AND t0.LIST_ID = t1.QL_DISTLIST_ID AND t1.LIST_ID = t2.LIST_ID(+)
If you look at the first column it request's to pull back you will notice that it selects t1.QL_DISTLIST_ID... Problem is, I have no such named column any where in my db!?!?!? Why on earth is that column being called? How does JPA generate the queries that it calls? If I knew that, I might be a little closer to figuring out what went wrong here or what I did wrong. Any help would be greatly appreciated.