public override string BuildQueryString(int depth) { var command = ""; if (keySelector == null) { command = Indent(depth + 1) + "*"; } else { if (keySelector.Body.NodeType != ExpressionType.New) { command = Indent(depth + 1); } command += BigQueryTranslateVisitor.BuildQuery(depth + 1, QueryContext.IndentSize, keySelector); } var sb = new StringBuilder(); sb.Append(Indent(depth)); sb.AppendLine("GROUP " + ((each) ? "EACH BY" : "BY")); sb.Append(command); return(sb.ToString()); }
public override string BuildQueryString(int depth) { var command = ""; if (selector == null) { command = Indent(depth + 1) + "*"; } else { if (selector.Body.NodeType != ExpressionType.New && selector.Body.NodeType != ExpressionType.MemberInit) { command = Indent(depth + 1); } command += BigQueryTranslateVisitor.BuildQuery(depth + 1, QueryContext.IndentSize, selector); } var sb = new StringBuilder(); sb.Append(Indent(depth)); sb.AppendLine("SELECT"); sb.Append(command); return(sb.ToString()); }
public override string BuildQueryString(int depth) { ITableName tableName = null; IBigQueryable parent = null; if (typedParent is ITableName) { parent = (IBigQueryable)typedParent; tableName = (ITableName)typedParent; } else if (typedParent is ITableName) { parent = (IBigQueryable)typedParent; tableName = (ITableName)typedParent; } if (tableName != null) { var sb = new StringBuilder(); sb.Append(Indent(depth)); sb.AppendLine("FROM"); sb.Append(Indent(depth + 1)); sb.Append("FLATTEN("); sb.Append(tableName.GetTableName()); sb.Append(", "); sb.Append(BigQueryTranslateVisitor.BuildQuery(depth, parent.QueryContext.IndentSize, fieldSelector)); sb.Append(")"); return(sb.ToString()); } var subquery = typedParent as SubqueryBigQueryable <T>; if (subquery != null) { var sb = new StringBuilder(); sb.Append(Indent(depth)); sb.AppendLine("FROM FLATTEN("); sb.Append(subquery.BuildQueryStringWithoutFrom(depth)); sb.Append(", "); sb.Append(BigQueryTranslateVisitor.BuildQuery(depth, subquery.QueryContext.IndentSize, fieldSelector)); sb.Append(")"); return(sb.ToString()); } throw new InvalidOperationException("Unexpected pattern, please report query to GitHub issues"); }
public override string BuildQueryString(int depth) { var command = BigQueryTranslateVisitor.BuildQuery(depth + 1, QueryContext.IndentSize, predicate); var sb = new StringBuilder(); sb.Append(Indent(depth)); sb.AppendLine("WHERE"); sb.Append(Indent(depth + 1)); sb.Append(command); return(sb.ToString()); }
string RangeFormat() { if (timestampFromExpr == null) { // no needs ToUniversalTime() return(string.Format("TABLE_DATE_RANGE({0}, TIMESTAMP('{1}'), TIMESTAMP('{2}'))", prefix, timestampFrom.ToString("yyyy-MM-dd"), timestampTo.ToString("yyyy-MM-dd"))); } else { var translator = new BigQueryTranslateVisitor(); var from = translator.VisitAndClearBuffer(timestampFromExpr); var to = translator.VisitAndClearBuffer(timestampToExpr); return(string.Format("TABLE_DATE_RANGE({0}, {1}, {2})", prefix, from, to)); } }
public override string BuildQueryString(int depth) { var fields = keySelectors.Select(x => { var field = BigQueryTranslateVisitor.BuildQuery(0, 0, x.Item1); return(field + ((x.Item2) ? " DESC" : "")); }); var sb = new StringBuilder(); sb.Append(Indent(depth)); sb.AppendLine("ORDER BY"); sb.Append(Indent(depth + 1)); sb.Append(string.Join(", ", fields)); return(sb.ToString()); }
string QueryFormat() { var expr = BigQueryTranslateVisitor.BuildQuery(0, 0, tableMatchCondition); return(string.Format("TABLE_QUERY({0}, \"{1}\")", dataset, expr)); }
public override string BuildQueryString(int depth) { var sb = new StringBuilder(); sb.Append(Indent(depth)); switch (joinType) { case InternalJoinType.Inner: sb.Append("INNER JOIN"); break; case InternalJoinType.InnerEach: sb.Append("INNER JOIN EACH"); break; case InternalJoinType.LeftOuter: sb.Append("LEFT OUTER JOIN"); break; case InternalJoinType.LeftOuterEach: sb.Append("LEFT OUTER JOIN EACH"); break; case InternalJoinType.RightOuter: sb.Append("RIGHT OUTER JOIN"); break; case InternalJoinType.RightOuterEach: sb.Append("RIGHT OUTER JOIN EACH"); break; case InternalJoinType.FullOuter: sb.Append("FULL OUTER JOIN"); break; case InternalJoinType.FullOuterEach: sb.Append("FULL OUTER JOIN EACH"); break; case InternalJoinType.Cross: sb.Append("CROSS JOIN"); break; case InternalJoinType.CrossEach: sb.Append("CROSS JOIN EACH"); break; default: throw new InvalidOperationException(); } // table select if (joinTableName != null) { sb.AppendLine(); sb.Append(Indent(depth + 1)); sb.Append(joinTableName); } else if (joinTable != null) { sb.AppendLine(); sb.Append(joinTable.BuildQueryStringWithoutFrom(depth)); } else if (joinFlattenTable != null) { sb.Append(joinFlattenTable.BuildQueryStringWithoutFrom(depth)); } else { throw new InvalidOperationException(); } // alias select var aliasExpr = aliasSelector.Body as NewExpression; var aliasName = aliasExpr.Members.Last().Name; sb.Append(" AS " + aliasName.EscapeBq()); // join condition if (joinType != InternalJoinType.Cross && joinType != InternalJoinType.CrossEach) { sb.Append(" ON "); var on = BigQueryTranslateVisitor.BuildQuery(0, 0, joinCondition); sb.Append(on); } return(sb.ToString()); }