获取 U-SQL SqlArray 中元素的索引?
Get index of element in U-SQL SqlArray?
我希望能够获得某个元素出现在我的 SqlArray 中的第一个索引。如果 myArray 中的第一个元素是“word”,那么像 IndexOf(myArray, "word") 这样的东西会 return 0。
有办法吗?我已经多次搜索文档,我的理解是 SqlArray 可能(?)在引擎盖下实现 IEnumerable,尽管 IEnumerable 下也没有任何 IndexOf 函数。
以防万一,我初始化数组的方式是:
DECLARE CONST @namesStr = "a,b,c,d";
DECLARE CONST @names = new SqlArray<string>( @namesStr.Split(',') );
如果您想使用 Scala 和 Databricks 执行此操作,那么您可以只使用 indexOf
,例如
val namesStr = "banana,apple,apricot"
// To array
val a = namesStr.split(",")
a.indexOf("apple")
我的结果:
如果您确实需要在 U-SQL 中执行此操作,那么可以在代码隐藏文件中使用 IndexOf
函数,例如:
using Microsoft.Analytics.Interfaces;
using Microsoft.Analytics.Types.Sql;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace USQLworking2
{
public class myFunctions
{
public static int someFunction(SqlArray<string> someString, string searchString)
{
//!!TODO add error / exception handling
String[] stringArray = someString.ToArray();
return Array.IndexOf(stringArray, searchString);
}
}
}
和U-SQL:
DECLARE @outputFile string = @"\output\output.csv";
DECLARE CONST @namesStr = "banana,apple,apricot";
DECLARE CONST @names = new SqlArray<string>( @namesStr.Split(',') );
@output =
SELECT
USQLworking2.myFunctions.someFunction ( @names, "apricot" ) AS shouldBe1
FROM ( VALUES ( 0 ) ) AS x(y);
OUTPUT @output
TO @outputFile
USING Outputters.Csv();
我希望能够获得某个元素出现在我的 SqlArray 中的第一个索引。如果 myArray 中的第一个元素是“word”,那么像 IndexOf(myArray, "word") 这样的东西会 return 0。
有办法吗?我已经多次搜索文档,我的理解是 SqlArray 可能(?)在引擎盖下实现 IEnumerable,尽管 IEnumerable 下也没有任何 IndexOf 函数。
以防万一,我初始化数组的方式是:
DECLARE CONST @namesStr = "a,b,c,d";
DECLARE CONST @names = new SqlArray<string>( @namesStr.Split(',') );
如果您想使用 Scala 和 Databricks 执行此操作,那么您可以只使用 indexOf
,例如
val namesStr = "banana,apple,apricot"
// To array
val a = namesStr.split(",")
a.indexOf("apple")
我的结果:
如果您确实需要在 U-SQL 中执行此操作,那么可以在代码隐藏文件中使用 IndexOf
函数,例如:
using Microsoft.Analytics.Interfaces;
using Microsoft.Analytics.Types.Sql;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace USQLworking2
{
public class myFunctions
{
public static int someFunction(SqlArray<string> someString, string searchString)
{
//!!TODO add error / exception handling
String[] stringArray = someString.ToArray();
return Array.IndexOf(stringArray, searchString);
}
}
}
和U-SQL:
DECLARE @outputFile string = @"\output\output.csv";
DECLARE CONST @namesStr = "banana,apple,apricot";
DECLARE CONST @names = new SqlArray<string>( @namesStr.Split(',') );
@output =
SELECT
USQLworking2.myFunctions.someFunction ( @names, "apricot" ) AS shouldBe1
FROM ( VALUES ( 0 ) ) AS x(y);
OUTPUT @output
TO @outputFile
USING Outputters.Csv();